2011-01-25 17 views
9

Estoy recibiendo el siguiente error de servidor en un script en perl:encabezado mal formado del script. Mala cabecera = <! DOCTYPE html>

encabezado con formato incorrecto desde el guión. Mala cabecera =: youtube_perl.pl,

Aquí está mi código fuente:


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

Gracias de antemano!

Respuesta

15

Lo descubrí. Tenido que añadir lo siguiente antes he tratado de imprimir la página:

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

supongo Perl no pueden imprimir las páginas html, sin definir la cabecera primero.

+3

@ user589294 - No. Perl puede imprimirlos. Pero no serán respuestas HTTP válidas. Por lo tanto, si desea que su página HTML impresa por Perl sea transportada a través de HTTP, debe imprimir una respuesta HTTP completa; nada tiene que ver con Perl. – DVK

+7

¡Por supuesto que Perl puede imprimir páginas HTML sin encabezado! Sin embargo, no puedes escribir un script CGI sin imprimir un encabezado. Mejor es: 'print $ q-> header();'. Ver [CGI de Perldoc] (http://perldoc.perl.org/CGI.html). – mscha

+1

Debería usar '\ x0D \ x0A' en lugar de' \ n' como EOL cuando habla HTTP. HTTP especifica que las líneas deben terminarse con CR-LF, mientras que '\ n' es el marcador de final de línea para su entorno actual,' \ n' resulta ser '\ x0D \ x0A' para usted porque se está ejecutando en Windows . –

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

Uso \n\n sin que esto no va a imprimir cualquier cosa que le dará:

encabezado mal formado de error de script

En el archivo de registro de errores.

Cuestiones relacionadas