Perl Ошибка преждевременного окончания заголовка скрипта - PullRequest
1 голос
/ 01 апреля 2012

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

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

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

Ответы [ 2 ]

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

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

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

4 голосов
/ 01 апреля 2012

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

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

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

UPDATE

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...