2011-01-25 7 views
9

Sto ricevendo il seguente errore server su uno script Perl:intestazione malformata dallo script. Bad intestazione = <! DOCTYPE html>

malformati colpo di testa da script. Bad intestazione =: youtube_perl.pl,

Qui è il mio codice sorgente:


#!"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; 

Grazie in anticipo!

risposta

15

Capito. Dovuto aggiungere quanto segue prima ho tentato di stampare la pagina:

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

Credo che Perl non è possibile stampare le pagine HTML senza definire l'intestazione prima.

+3

@ user589294 - No. Perl può stamparli. Ma non saranno risposte HTTP valide. Quindi, se vuoi che la tua pagina HTML stampata da Perl sia trasportata via HTTP, devi effettivamente stampare una risposta HTTP completa - non ha niente a che fare con Perl – DVK

+7

Ovviamente Perl può stampare pagine HTML senza intestazione! Tuttavia, non è possibile scrivere uno script CGI senza stampare un'intestazione. Migliore è: 'stampa $ q-> header();'. Vedi [perldoc CGI] (http://perldoc.perl.org/CGI.html). – mscha

+1

Si dovrebbe usare '\ x0D \ x0A' piuttosto che' \ n' come EOL quando si parla HTTP. HTTP specifica che le linee devono essere terminate con CR-LF mentre '\ n' è il marcatore di fine riga per il tuo ambiente corrente,' \ n' solo per essere '\ x0D \ x0A' per te perché stai usando Windows . –

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

Usa \n\n senza questo non stamperà nulla darà:

valido colpo di testa da errore di script

Nel file di log degli errori.