Преждевременный конец заголовков скриптов (Perl) - PullRequest
1 голос
/ 09 июля 2011
#!C:\xampp\apache\bin\httpd.exe
$command=`perl -v`;
$title = "Perl Version";

print "Content-type: text/html\\n\\n";
print "<html><head><title>$title</title></head><body>";

print "
<h1>$title</h1>

\n";
print $command;

print "</body></html>";

Я получаю эту ошибку:

Преждевременный конец заголовков скриптов: version.cgi

Ответы [ 2 ]

6 голосов
/ 09 июля 2011

Вам нужно удалить лишнюю косую черту

Этот код:

print "Content-type: text/html\\n\\n";

Должно быть так:

print "Content-type: text/html\n\n";

EDIT

Кроме того, первая строка в скрипте выглядит неправильно.

#!C:\xampp\apache\bin\httpd.exe

Это должен быть путь к Perl, а не httpd.

РЕДАКТИРОВАТЬ 2

Наконец, все это было бы легче решить, если бы вы добавили эти две строки после первой строки в вашем скрипте:

 use strict;
 use warnings;

И запустите скрипт в командной строке с флагами -c -w, чтобы проверить компиляцию и проверить предупреждения, т.е. perl -cw yourscript.cgi Это даст вам номера строк ошибок и предупреждений в вашем скрипте.

В целом ваш сценарий может выглядеть так:

#!C:\path\to\perl.exe

use strict;
use warnings;

my $command=$^V;
my $title = 'Perl Version';

print "Content-type: text/html\r\n\r\n";
print "
<html><head><title>$title</title></head><body>

<h1>$title</h1>

$command

</body></html>";
2 голосов
/ 09 июля 2011

Вы написали \\n, где в заголовке должно быть \n.

ETA: Кроме того, perl -v не очень хороший способ получить версию.Переменная $^V содержит более краткий и конкретный номер версии.

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