|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alan Long 2:5030/1082.72 04 Feb 2003 02:38:56 To : All Subject : CGI.pm problem -------------------------------------------------------------------------------- Hello All! Столкнулся с очередной проблемой в CGI.pm: - -- % perl -MCGI -e '$q=CGI->new; print $q->a({-href=>"/script.cgi?a&b"},"link"),"\n"' <a href="/script.cgi?a&b">link</a> - -- То есть текст в href эскейпится, что в принципе правильно, кроме пожалуй что со случаем & => & так как броузер приходит с запросом: GET /script.cgi?a&b HTTP/1.x Скрипты написанные на perl с использованием CGI.pm работают, так как CGI.pm может использовать в качестве разделителя аргументов как '&' так и ';', но вот с чем-то отличным от CGI.pm начинают возникать проблемы, так как вместо параметра 'b' они получают 'amp;b' ;-( После изучения кода CGI.pm, получилось что все дело в функции: _make_tag_func Где используется: = make_attributes(shift()||undef,1); Hу а make_attributes в свою очередь: sub make_attributes { my $attr = shift; return () unless $attr && ref($attr) && ref($attr) eq 'HASH'; my $escape = shift || 0; ... } То есть преобразование жестко зашито в код и никакими методами на него воздействовать нельзя ;-( А очень-бы хотелось-бы. Хотелось-бы услышать совет о том как написать автору модуля CGI.pm что-бы он внес соответствующие изменения в CGI.pm. То есть я сделаю патч этого всего хозяйства, отошлю его, сеществует-ли вероятность того, что этот патч включат в дальнейшие версии CGI.pm ? -- With best, Ъ-· Ъ Е-ЧLaі\і <alan@x-rays.eu.org> --- timEd/386 1.10+ * Origin: X - Rays Station (2:5030/1082.72) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/4581e3ef26f0.html, оценка из 5, голосов 10
|