[Moscow.pm] a=b&c=d
Alex Shatlovsky
shatlovsky на gmail.com
Сб Дек 22 15:16:39 PST 2007
Здравствуйте, Andrew.
Вы писали 23 декабря 2007 г., 1:37:16:
> Привет!
> В разговоре с товарищем-рубистом о том, как написать парсер-декодер
> строк 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 = map { split /=/ } split /&/;
--
> Вся программа:
> 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 mailing list
> moscow-pm на pm.org | http://moscow.pm.org
> http://mail.pm.org/mailman/listinfo/moscow-pm
--
С уважением,
А.Н.Шатловский
Подробная информация о списке рассылки Moscow-pm