Forum Webscript.Ru

Программирование => Perl => Тема начата: Oleg111 от 22 Сентября 2003, 15:40:35

Название: Не выполняется простейший скрипт на Денвере.
Отправлено: 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 который идет на Денвере.
Спасибо.
Название: Не выполняется простейший скрипт на Денвере.
Отправлено: ondr от 22 Сентября 2003, 15:44:00
вместо
end_print;
пиши
end_print

имеется в виду последняя строка

зы: и если это совсем последняя строка, добавь еще пустую строку после.
Название: Не выполняется простейший скрипт на Денвере.
Отправлено: Oleg111 от 22 Сентября 2003, 18:24:17
Ништяк спасибо. Заработала. А я и не вижу.
 В предыдущем сообщении я совсем забыл скинуть скрипт с использованием модуля 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-й строке скрипта.
  Вот.
Название: Не выполняется простейший скрипт на Денвере.
Отправлено: NeoNox от 22 Сентября 2003, 18:29:30
Цитировать
Oleg111:
Can\'t locate CGI.pm in

А нету у тебя модуля CGI.
Инсталь или возьми наконец полную версию активстейтовского Perl
Название: Не выполняется простейший скрипт на Денвере.
Отправлено: Oleg111 от 22 Сентября 2003, 19:19:03
Хорошо я уточню на Денвере.
Название: Не выполняется простейший скрипт на Денвере.
Отправлено: Oleg111 от 22 Сентября 2003, 19:31:58
Дмитрий Котеров (автор пакета Денвер) говорит:
  Z:\\usr\\lib\\CGI.pm:
  $CGI::VERSION=\'2.752\';

 из чего я понял, что на Денвере установлен таки модуль CGI.pm, версии 2,752. Значит что то другое.
Название: Не выполняется простейший скрипт на Денвере.
Отправлено: Phoinix от 23 Сентября 2003, 09:29:31
Oleg111
Есть классный скрипт infoperl.cgi - находишь его, запускаешь и видишь какие модули у тебя реально установлены... а потом разбираешься...
Название: Не выполняется простейший скрипт на Денвере.
Отправлено: flymio от 05 Октября 2003, 15:07:00
print <Content-type: text/html;
виновата точка с запятой после text/html
лучше так:
print "Content-type: text/html\\n\\n";
а дальше что угодно