【发布时间】:2012-06-20 22:47:52
【问题描述】:
有没有办法用Mojo::UserAgent 写这样的东西,可以设置等效选项(Range、:content_file、:content_cb、size_hint)。
#!/usr/bin/env perl
use warnings;
use 5.12.0;
use LWP::UserAgent;
use File::Basename;
my $url = 'ftp://ftp.vim.org/pub/vim/runtime/spell/en.utf-8.spl';
my $file = basename $url;
my $ua = LWP::UserAgent->new();
my $bytes = 0;
open my $fh, '>>:raw', $file or die $!;
my $res = $ua->get(
$url,
'Range' => "bytes=$bytes-",
':content_cb' => sub {
my ( $chunk, $res, $proto ) = @_;
print $fh $chunk;
state $old_size = 0;
my $size = tell $fh;
my $total;
say 'chunk size :', $size - $old_size;
if ( $total = $res->header( 'Content-Length' ) ) {
say 'total size : ', $total;
say 'downloaded : ', $size;
say 'remaining : ', $total - $size;
}
say "";
$old_size = $size;
}
);
close $fh;
say $res->status_line;
【问题讨论】:
-
你的目标是什么?为什么要在工作程序中将
LWP替换为Mojo::UserAgent? -
在某些脚本中,我使用的是 Mojolicious。因此,如果有一天我需要这样的东西,我已经有了解决方案。
标签: perl lwp-useragent mojolicious