Результат LWP :: Simple get усекается - PullRequest
4 голосов
/ 09 декабря 2011

Я использую Perl для выполнения запроса на получение URL-адреса, и результаты выглядят усеченными.

Если я запускаю

curl myurl | wc -l

, результат равен 1823, а еслиЯ создаю следующий файл foo.pl:

#!/usr/bin/perl

my $url = 'myurl';

use LWP::Simple;
my $content = get $url;
die "Couldn't get $url" unless defined $content;
print $content;

и запускаю

./foo.pl | wc -l

результат варьируется от 1300 до 1823.-линии при использовании perl.

Что может быть причиной этого?

1 Ответ

1 голос
/ 26 декабря 2011

Что произойдет, если вы отключите буферизацию?Я также согласен с Карстеном С. в проверке заголовков http на наличие ошибочных кодов.Наконец, я бы также попытался сохранить содержимое в массиве, просто чтобы посмотреть, что произойдет.

Чтобы отключить буферизацию, вы можете просто поместить $|++ вверху вашего скрипта после ваших операторов use,Снова выстрел в темноте.

Чтобы проверить заголовки http, вы можете использовать CGI.Вот небольшой сайт с хорошим примером того, как получить заголовки из запроса:

http://www.velocityreviews.com/forums/t24118-re-lwp-simple-header-information-problems.html

Наконец, попробуйте использовать массив @contents для хранения содержимого извеб-сервер вместо скаляра, $contents.В прошлом у меня были случаи, когда с удаленного сервера передавалось что-то, что Perl неверно истолковывает как список.Я не уверен, что LWP::Simple отвечает за это время, но попробовать не помешает.Возможно, вы получаете только одну часть данных, а остальные либо перезаписываются, либо игнорируются вообще.Размещение данных в массиве может помочь определить, происходит ли это.

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