может это поможет:
Доставка больших документов
1-й вариант. Записываем данные в процессе скачивания в файл
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(GET => \'
http://www.linpro.no/lwp/libwww-perl-5.46.tar.gz\');$res = $ua->request($req, "libwww-perl.tar.gz");
if ($res->is_success) {
print "ok\\n";
}else{
print $res->status_line, "\\n";
}
2-й вариант. Вставка контролирующей подпрограммы в качестве второго аргумента $ua->request(). В этом варианте можно записывать скачиваемый файл по кусочкам, чтобы в случае обрыва связи потом его докачать.
use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$URL = \'
ftp://ftp.unit.no/pub/rfc/rfc-index.txt\';my $expected_length;
my $bytes_received = 0;
my $res =$ua->request(HTTP::Request->new(GET => $URL),
sub {
my($chunk, $res) = @_;
$bytes_received += length($chunk);
unless (defined $expected_length) {
$expected_length = $res->content_length || 0;
}
if ($expected_length) {
printf STDERR "%d%% - ",
100 * $bytes_received / $expected_length;
}
print STDERR "$bytes_received bytes received\\n";
# В $chunk - текущие данные
# print $chunk;
}
);
print $res->status_line, "\\n";