Forum Webscript.Ru
Программирование => Perl => Тема начата: Oleg111 от 22 Сентября 2003, 15:40:35
-
Доброго времени суток.
При запуске следущего скрипта:
#!/usr/bin/perl -w
print <Content-type: text/html;
Hello World
Greetings, Terrans!
end_print;
выходят две ошибки в файле error:
[Mon Sep 22 04:41:48 2003] [error] [client 127.0.0.1] Premature end of script headers: /home/test.ru/cgi/prostaya.cgi
[Mon Sep 22 04:41:48 2003] [error] [client 127.0.0.1] Can\'t find string terminator "EOF" anywhere before EOF at \\home\\test.ru\\cgi\\prostaya.cgi line 2.
Я не знаю английского, но примерно 2-я означает, что вроде как "не в состоянии обнаружить указатель конца строки "end_print" в пределах до того как закончен файл". А 1-я " Преждевременный вызов некого скрипта из /home/test.ru/cgi/prostaya.cgi ".
Мне не ясно какую ошибку я мог совершить при указании конца строки here-документа, а также не ясна суть претензий по первой ошибке.
В строке браузера набираю: http://test.ru/cgi/prostaya.cgi
Соответственно скрипт находится в папке home/test.ru/cgi/prostaya.cgi
Я задавал этот вопрос на форум Денвера, но там молчат. Скрипт в принципе простой, так что бы освоить CGI.
Похожая какртина с использованием модуля CGI.pm
Ошибки:
[Mon Sep 22 15:46:58 2003] [error] [client 127.0.0.1] Premature end of script headers: /home/test3.ru/cgi/dir_imp.cgi
[Mon Sep 22 15:46:58 2003] [error] [client 127.0.0.1] Can\'t locate CGI.pm in @INC (@INC contains: .) at \\home\\test3.ru\\cgi\\dir_imp.cgi line 3.
[Mon Sep 22 15:46:58 2003] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at \\home\\test3.ru\\cgi\\dir_imp.cgi line 3.
1-я. Преждевременный вызов некого скрипта из: /home/test3.ru/cgi/dir_imp.cgi
2-я. Не в состоянии определить местоположение в @INC.
3-я. Предотвращен запуск \\home\\test3.ru\\cgi\\dir_imp.cgi из-за неудачной компиляции на 3-й строке скрипта.
(по сравнению с первым скриптом изменилась только папка с test.ru на test3.ru).
Примеры взяты из книги «Изучаем Perl” Рэндала Шварца и Тома Кристиана.
Подскажите примерно, где может быть ошибка? Или скинте рабочий пример взаимодействия Perl с HTML который идет на Денвере.
Спасибо.
-
вместо
end_print;
пиши
end_print
имеется в виду последняя строка
зы: и если это совсем последняя строка, добавь еще пустую строку после.
-
Ништяк спасибо. Заработала. А я и не вижу.
В предыдущем сообщении я совсем забыл скинуть скрипт с использованием модуля CGI.pm. Вот он:
#!/usr/bin/perl -w
# cgi-bin/lce_cream
use CGI qw(:standard);
print header();
print start_html("Hello World"), h1("Hello World");
my $favorite = param("flavor");
print p("Your favorite flavor is $favorite.");
print end_html()
После того как я убрал точку с запятой из последней строки осталась только одна ошибка, вот она:
[Tue Sep 23 00:06:03 2003] [error] [client 127.0.0.1] BEGIN failed--compilation aborted at \\home\\test3.ru\\cgi\\dir_imp.cgi line 3.
Примерно по русски:
Предотвращен запуск \\home\\test3.ru\\cgi\\dir_imp.cgi из-за неудачной компиляции на 3-й строке скрипта.
Вот.
-
Oleg111:
Can\'t locate CGI.pm in
А нету у тебя модуля CGI.
Инсталь или возьми наконец полную версию активстейтовского Perl
-
Хорошо я уточню на Денвере.
-
Дмитрий Котеров (автор пакета Денвер) говорит:
Z:\\usr\\lib\\CGI.pm:
$CGI::VERSION=\'2.752\';
из чего я понял, что на Денвере установлен таки модуль CGI.pm, версии 2,752. Значит что то другое.
-
Oleg111
Есть классный скрипт infoperl.cgi - находишь его, запускаешь и видишь какие модули у тебя реально установлены... а потом разбираешься...
-
print <Content-type: text/html;
виновата точка с запятой после text/html
лучше так:
print "Content-type: text/html\\n\\n";
а дальше что угодно