2011-01-25 16 views
9

: komutkomut dosyasından hatalı biçimlendirilmiş başlık. Kötü başlık = <! DOCTYPE html> Bir perl senaryo üzerinde aşağıdaki sunucu hatası alıyorum

hatalı oluşturulmuş başlık. Kötü başlık =: önceden


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

Teşekkür: youtube_perl.pl,

İşte benim kaynak kodu!

cevap

15

Şekil verilmiş. Ben sayfayı yazdırmak için teşebbüs önce aşağıdakileri eklemek zorunda kaldı:

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

Ben perl ilk başlığını tanımlama olmadan html sayfaları yazdırmak olamaz sanırım. Hata günlüğü dosyasında komut hatası

den

Bozuk başlık: bu olmadan

+3

@ user589294 - Hayır. Perl bunları yazdırabilir. Ancak geçerli bir HTTP yanıtı olmayacaklar. Yani, HTML sayfanızın HTTP üzerinden taşınmasını istiyorsanız, tam bir HTTP yanıtı yazdırmanız gerekir - Perl ile ilgisi yoktur – DVK

+7

Elbette Perl, HTML sayfalarını başlıksız yazdırabilir! Yine de, bir başlık yazdırmadan bir CGI betiği yazamazsınız. Daha iyi: 'print $ q-> header();'. Bakınız [perldoc CGI] (http://perldoc.perl.org/CGI.html). – mscha

+1

HTTP söz konusu olduğunda EOL yerine '\ n' yerine' \ x0D \ x0A' kullanmalısınız. HTTP, satırların CR-LF ile sonlandırılması gerektiğini belirtirken, \ n, şu anki ortamınız için çizgi işaretçisinin sonudur, \ n 'sadece sizin için \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ . –

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

Kullanım \n\n buna verecek bir şey yazdırmaz.