|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Paul Kulchenko 2:5020/400 12 Jul 2000 20:31:30 To : All Subject : Re: просветите -------------------------------------------------------------------------------- Hi, Andrew! Andrew Zhilenko wrote: > > Hарод просветите плиз, что делает данный кусок кода: > > $member=$ENV{'QUERY_STRING'}; > Это кому-то не лень было изобретать велосипед. :-) Это парсинг Hу не всегда. Я сам против изобретения (пользуюсь библиотеками где возможно), но иногда заказчик вне твоего контроля и не хочет ничего менять. Hедавно попросили сделать скрипт, эта часть была как раз из двух строчек, но выяснилось, что у заказчика стоит достаточно старый перл, нет CGI.pm вовсе и load-balancing на 70 серверов, соответственно ничего они менять и устанавливать не хотят. Пришлось сделать нечто такое на чистом перле: sub unescape { return undef unless defined(my $todecode = shift); for ($todecode) { tr/+/ /; s/%([0-9a-fA-F]{2})/pack "c", hex $1/eg; } return $todecode; } sub parameters { my $params = ''; if ($ENV{'REQUEST_METHOD'} =~ /^GET$/i) { $params = $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'}; } if ($ENV{'REQUEST_METHOD'} =~ /^POST$/i) { read(STDIN,$params,$ENV{'CONTENT_LENGTH'}); # also add parameters from QUERY_STRING $params .= (length($params) ? '&' : '') . $ENV{'QUERY_STRING'} if defined $ENV{'QUERY_STRING'}; } # split parameters and return hash with pairs name => value map { map {unescape $_} split(/=/,$_,2) } split /[&;]/, $params; } parameters вернет hash с параметрами. Может кому пригодится. Так что не все так просто. Best wishes, Paul. --- ifmail v.2.15dev5 * Origin: Rostelecom/Internet Centre (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/35556df086bf.html, оценка из 5, голосов 10
|