Почему моя программа Perl CGI не работает в Windows? - PullRequest
2 голосов
/ 24 марта 2010

Я написал следующее в index.pl, которая является папкой C:\xampp\htdocs\perl:

#!/usr/bin/perl
print "<html>";
print "<h2>PERL IT!</h2>";
print "this is some text that should get displyed in browser";
print "</html>";

При просмотре http://localhost:88/perl/ вышеупомянутый HTML не отображается (я пробовал в IE FF и chrome).

В чем причина?

У меня установлены xampp и apache2.2 в этой системе Windows XP.

Ответы [ 3 ]

4 голосов
/ 24 марта 2010

См. Также Как устранить неполадки в сценарии Perl CGI? .

Ваша проблема была связана с тем, что ваш скрипт не отправил соответствующие заголовки.

Действительный HTTP-ответ состоит из двух разделов: заголовки и тело.

Вы должны убедиться, что используете правильный модуль обработки CGI. CGI.pm является стандартом de facto . Тем не менее, в нем много исторического багажа, и CGI :: Simple обеспечивает более чистую альтернативу.

Используя один из этих модулей, ваш скрипт был бы:

#!/usr/bin/perl
use strict; use warnings;
use CGI::Simple;

my $cgi = CGI::Simple->new;

print $cgi->header, <<HTML;
<!DOCTYPE HTML>
<html>
<head><title>Test</title></head>
<body>
<h1>Perl CGI Script</h1>
<p>this is some text that should get displyed in browser</p>
</body>
</html>
HTML

Имейте в виду, что print не имеет проблем с несколькими аргументами. Нет смысла учиться программировать, как в 1999 году.

2 голосов
/ 24 марта 2010

Возможно, это потому, что вы не поместили свой текст между тегами <body>. Также вы должны указать тип контента как text/html.

Попробуйте это:

print "Content-type: text/html\n\n"; 
print "<html>";
print "<h2>PERL IT!</h2>";
print "<body>";
print "this is some text that should get displyed in browser";
print "</body>";
print "</html>";

Также по ссылке, которую дал рикс,

Perl:
Executable: \xampp\htdocs and \xampp\cgi-bin
Allowed endings: .pl

так что вы должны получить доступ к вашему скрипту, например: http://localhost/cgi-bin/index.pl

0 голосов
/ 24 марта 2010

Я просто догадываюсь.

  • Вы запустили сервер apache?
  • Является ли 88 правильным портом для достижения вашего apache?

Вы также можете попробовать http://localhost:88/perl/index.pl (поэтому добавьте имя скрипта к правильному адресу).

Проверьте эту документацию за помощью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...