[Moscow.pm] a=b&c=d
Andrew Shitov
andy на shitov.ru
Сб Дек 22 14:37:16 PST 2007
Привет!
В разговоре с товарищем-рубистом о том, как написать парсер-декодер
строк query string вида a=b&c=d, чтобы получить хеш {a=>'b', c=>'d'},
я загнал всю логику этого парсера в одну строку.
Первоначальный ad-hoc-вариант был
foreach (split /&/) {
($a, $b) = split /=/;
$h{$a} = $b;
}
потом убрал временные переменные $a и $b:
/(.*?)=(.*)/, $h{$1} = $2 for split /&/;
А вот как записать то же совсем без $1 и $2?
Вся программа:
my %h;
$_ = "a=b&c=d";
/(.*?)=(.*)/, $h{$1} = $2 for split /&/;
print "$_=$h{$_}\n" for keys %h;
Работает как ожидалось:
C:\_t>perl h.pl
c=d
a=b
--
Андрей Шитов
______________________________________________________________________
andy на shitov.ru | http://www.shitov.ru
Подробная информация о списке рассылки Moscow-pm