2011-01-25 2 views
9

Я получаю следующее сообщение об ошибке сервера на PERL скрипт:неправильный заголовок из сценария. Плохой заголовок = <! DOCTYPE HTML>

уродливы заголовок из сценария. Bad заголовок =: youtube_perl.pl,

Вот мой исходный код:


#!"C:\XAMPP\perl\bin\perl.exe" -T 

use strict; 
use warnings; 

use CGI; 
use CGI::Carp qw/fatalsToBrowser/; 
use WWW::Mechanize; 

my $q = CGI->new; 

my $url = 'http://www.youtube.com'; 

my $mechanize = WWW::Mechanize->new(autocheck => 1); 

$mechanize->get($url); 

my $page = $mechanize->content(); 

print $page; 

Заранее спасибо!

ответ

15

Выяснил это. Если бы добавить следующее, прежде чем я пытался напечатать страницу:

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

Я думаю, Perl не может печатать HTML-страницы без определения заголовка первой.

Malformed заголовок от ошибки сценария

В файле журнала ошибок:

+3

@ user589294 - № Perl может печатать их. Но они не будут действительными ответами HTTP. Поэтому, если вы хотите, чтобы ваша страница HTML, напечатанная Perl, переносилась по HTTP, вам нужно на самом деле распечатать полный HTTP-ответ - не имеет никакого отношения к Perl – DVK

+7

Конечно, Perl может печатать HTML-страницы без заголовка! Однако вы не можете писать сценарий CGI без печати заголовка. Лучше: 'print $ q-> header();'. См. [Perldoc CGI] (http://perldoc.perl.org/CGI.html). – mscha

+1

Вы должны использовать '\ x0D \ x0A', а не' \ n' как EOL при разговоре по HTTP. HTTP указывает, что строки должны быть завершены с помощью CR-LF, тогда как '\ n' - это маркер конца строки для вашей текущей среды,' \ n' просто является '\ x0D \ x0A' для вас, потому что вы работаете в Windows , –

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

Используйте \n\n без этого ничего не будет давать печати.

Смежные вопросы