Я не рекомендую использовать LWP :: Simple по любой причине, потому что невозможно настроить его или обработать ошибки с пользой.Использовать LWP :: UserAgent , который он оборачивает, почти так же просто (хотя обработка ошибок немного сложна).Приведенные ниже примеры заменят строки use LWP::Simple;
и my $output = get($url);
.
use strict;
use warnings;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new(timeout => 30);
my $response = $ua->get($url);
unless ($response->is_success) {
# the Client-Warning, Client-Aborted, and X-Died headers each may be set on client/transport errors
die $response->status_line;
}
my $output = $response->decoded_content;
Ядро HTTP :: Tiny также просто.
use strict;
use warnings;
use HTTP::Tiny;
my $ua = HTTP::Tiny->new;
my $response = $ua->get($url);
unless ($response->{success}) {
die $response->{status} == 599 ? $response->{content} : "$response->{status} $response->{reason}";
}
my $output = $response->{content};
ЕслиВы действительно хотите использовать LWP :: Simple, который будет по крайней мере сообщать об ошибках транспорта, попробуйте ojo от Mojolicious:
perl -Mojo -E'say g(shift)->text' http://example.com
В сценарии, а не в oneliner, вы можете использовать Mojo :: UserAgent напрямую, а также обрабатывает ошибки HTTP, как указано выше:
use strict;
use warnings;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
my $response = $ua->get($url)->result;
unless ($response->is_success) {
die $response->code . ' ' . $response->message;
}
my $output = $response->text;