2012-04-01 2 views
1

Итак, я запускаю тестовый сервер localhost с Windows 7 и Xampp. Я работаю над веб-искателем, который будет сканировать Интернет, но когда я его открываю в своем браузере, я получаю ошибку «Преждевременный конец ошибок заголовков скриптов». Я думал, что у меня это не из «print» Content-Type: text/html \ n \ n ";" что обычно является проблемой .. но это не так.Perl «Недопустимый конец заголовков скриптов»

Это код, я использую:

#!"\xampp\perl\bin\perl.exe" 
print "Content-Type: text/html\n\n"; 
use strict; 
use warnings; 

use LWP::Simple; 
use LWP::UserAgent; 
use HTTP::Request; 
use HTTP::Response; 
use HTML::LinkExtor; 

open my $file1,"+>>", ("links.txt"); 
select($file1); 

my @urls = ('http://www.youtube.com/'); 

my $browser = LWP::UserAgent->new('IE 6'); 
$browser->timeout(10); 


while (@urls) { 
    my $url = shift @urls; 
    my $request = HTTP::Request->new(GET => $URL); 
    my $response = $browser->request($request); 

    if ($response->is_error()) {printf "%s\n", $response->status_line;} 
    my $contents = $response->content(); 

    my ($page_parser) = HTML::LinkExtor->new(undef, $url); 
    $page_parser->parse($contents)->eof; 
    @links = $page_parser->links; 

    foreach $link (@links) { 
    push @urls, $$link[2]; # Add link to list of urls before printing it 
    print "$$link[2]\n"; 
    } 

    sleep 60; 
} 
+0

Вы всегда можете попробовать использовать 'use CGI :: Carp qw (fatalsToBrowser);' в верхней части вашего скрипта, чтобы узнать, что такое точное сообщение об ошибке, здесь. – summea

+0

Я добавил это в список использования, и он по-прежнему дает мне ту же ошибку. –

+0

Из [Часто задаваемые вопросы о переполнении стека] (http://stackoverflow.com/questions/tagged/perl?sort=faq): [Как я могу устранить скрипт CGI Perl?] (Http://stackoverflow.com/questions/2165022/как-кан-я-Troubleshoot-мой жемчужно-CGI-скрипт) – daxim

ответ

5
Я думал, что я получил от этого не включая print "Content-Type: text/html\n\n";

Не совсем. Вы не продемонстрировали, что print запущен, и вы не продемонстрировали, что print получил прогон перед другим выходом.

Ошибка во время компиляции, и в этом случае заявление print так и не было выполнено. Проверьте журнал ошибок вашего веб-сервера на предмет фактической ошибки.

4

На первый взгляд, код размещен выше, содержит несколько ошибок, которые мешают ему быть выполнены: во-первых $URL, @links и $link не объявлены (помните, что вы находитесь под strict). Тогда еще одна проблема заключается в том, что LWP::UserAgent->new() не принимает нечетное число аргументов (поскольку для этого требуется хэш).

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

Вначале полезно запустить сценарий из командной строки, только чтобы проверить, что он возвращает что-либо.

UPDATE

Да, просто исправляя ошибки выше сценарий кажется работать (на Linux из командной строки). Он по-прежнему производит несколько предупреждений (и выполняет некоторые ненужные операции), которые также должны быть устранены.

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