URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7223
[ Назад ]

Исходное сообщение
"как переделать Get-запрос в Хэш"

Отправлено sturgeon , 29-Фев-08 14:00 
После заполнения формы и нажатия волшебной кнопочки в перле получаю переменную с запросом $query="fam=Иванов&im=Иван&otch=Иванович&den_r=01&mes_r=01"

какбы так половчее сделать хэш, типа
%hash=(fam,Иванов,im,Иван,otch,Иванович,den_r,01,mes_r,01)?

@a=split(/&/,$query), потом потом элементы @a сплитить через /=/... долго

у кого есть готовая короткая и никому не понятная регулярновыраженческая строчка? =)


Содержание

Сообщения в этом обсуждении
"как переделать Get-запрос в Хэш"
Отправлено angra , 29-Фев-08 15:01 
Неужели каждый начинающий веб-программер хочет изобрести этот велосипед? Что мешает использовать готовые модули, религия или шило в жопе?

"как переделать Get-запрос в Хэш"
Отправлено sturgeon , 29-Фев-08 15:24 
>Неужели каждый начинающий веб-программер хочет изобрести этот велосипед? Что мешает использовать готовые
>модули, религия или шило в жопе?

модули - черные ящики с лишней хренью... и религия, и щило и еще 10 000 причин не дадут мне использовать модули

read(STDIN, $data, $ENV{'CONTENT_LENGTH'});
$query=urldecode($data);
@formfields=split(/&/,$query);
foreach(@formfields){@zzz=split(/=/,$_);@xxx=(@xxx,@zzz);}
%hash=@xxx;

так долинно, наверняка можно регулярным выражением в одну строчку все сделать.
как в split указать разделителем сразу 2 символа (& и =)?


"как переделать Get-запрос в Хэш"
Отправлено angra , 29-Фев-08 15:39 
>модули - черные ящики с лишней хренью... и религия, и щило и
>еще 10 000 причин не дадут мне использовать модули

Это похоже не лечится. Ну изобретайте свой велосипед дальше, когда набьете достаточно шишек можете заглянуть в код уже существующих модулей и увидеть сколько всего вы не учли.

Ну а непосредственно на ваш вопрос ответ простой - определите класс символов: split /[=&]/


"как переделать Get-запрос в Хэш"
Отправлено sturgeon , 29-Фев-08 15:48 
>Ну а непосредственно на ваш вопрос ответ простой - определите класс символов:
>split /[=&]/

Спасибо =)


"как переделать Get-запрос в Хэш"
Отправлено anonymous , 29-Фев-08 20:28 
>Это похоже не лечится. Ну изобретайте свой велосипед дальше, когда набьете достаточно
>шишек можете заглянуть в код уже существующих модулей и увидеть сколько
>всего вы не учли.

+100.  Все интернет-протоколы намного сложнее, чем это кажется среднестатистическому программисту.  А потом у нас, у юзеров, например, не работают почтовые адреса со знаком "плюс", например foo+bar@example.com.  Просто потому что большинство "веб-программистов" считают, что это неправильный адрес, и его просто нельзя ввести в большинство веб-форм регистрации.  Список того, что не работает, но должно, можно продолжать до бесконечности.


"как переделать Get-запрос в Хэш"
Отправлено alexvs , 13-Мрт-08 21:33 
>Ну а непосредственно на ваш вопрос ответ простой - определите класс символов:
>split /[=&]/

В случаи, если значение одного из параметров будет не определенно (Пример: $query="fam=&mes_r=01"), то обработается не корректно. Лучше использовать функцию param модуля CGI.