Forum Webscript.Ru
Программирование => Perl => Тема начата: woozex от 18 Июня 2002, 16:39:22
-
Встречается много сообщений на тему этой ошибки, но все не то. Помогите, плиз, кто может!
Вот мой скрипт:
#!/usr/bin/perl
use CGI qw/:cgi-lib/;
print header(\'text/plain\'),
"test\\n";
ReadParse();
print "var=$in{var}";
Сначала скрипт выполняется несколько раз нормально, но затем через раз вылезает subj, затем если еще понажимать на Reload - ошибка уже каждый раз.
Что это может быть?
Копирую в Ascii режиме, сервер Apache.
Скрипт типа
#!/usr/bin/perl
use CGI qw/:standard/;
print header(\'text/plain\'),
"test\\n";
выполняется нормально любое количество раз.
Сообщение об ошибке из error log:
[Tue Jun 18 12:47:28 2002] [error] Undefined subroutine &Apache::ROOT::cgi_2dbin::_31_2ecgi::header called at /var/www/world_cup/forum/cgi-bin/1.cgi line 3.
-
Что за ф-ция ReadParse()? Считывает параметры?
Если да, почему бы не использовать param(...)
Попробуй этот скрипт:
#!/usr/bin/perl
use CGI qw/:standard/;
print header(\'text/plain\'),
"test\\n";
$in{var}=param(\'var\');
print "var=$in{var}";
-
Спасибо, так работает, но пока неизвестно подойдет ли это мне, поскольку я переделываю старые скрипты с cgi-lib.pl на CGI.pm. Прочитал статью "Как перейти с cgi-lib.pl на CGI.pm" и стал делать так, как там написано. Ведь хочется все сделать с наименьшими затратами!
ReadParse действительно разбирает строку параметров. Она существовала в cgi-lib.pl и для совместимости скриптов ее и др. включили в CGI.pm
-
Можешь эту ф-цию использовать для разбора параметров.
if ($ENV{\'REQUEST_METHOD\'} eq "GET") { $buffer = $ENV{\'QUERY_STRING\'}; }
else { read(STDIN, $buffer, $ENV{\'CONTENT_LENGTH\'}); }
@nvpairs = split(/&/,$buffer);
foreach $pair (@nvpairs)
{ ($namebuffer, $valuebuffer) = split(/=/, $pair);
$valuebuffer =~ tr/+/ /;
$valuebuffer =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$in{$namebuffer}=$valuebuffer;
}
Я её в основном пользуюсь т.к. не люблю лишний раз модули подключать. (она по-моему и работает в cgi-lib.pl)
-
[Tue Jun 18 12:47:28 2002] [error] Undefined subroutine &Apache::ROOT::cgi_2dbin::_31_2ecgi::header called at /var/www/world_cup/forum/cgi-bin/ 1.cgi line 3.
При use CGI qw/:cgi-lib/; функция header не экспортируется.
Можно сделать еще экспорт ее одной, тогда все будет работать.:)