显示LWP::UserAgent下载进度



我正在使用LWP::UserAgent和:content_file选项将一个大文件直接下载到Perl文件中。

这是我的代码的一个简化的例子:

require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->timeout(3600);
$ua->env_proxy;
my $response = $ua->get(
    'http://example.com/largefile.xml',
    :content_file   => 'path/to/file/largefile.xml'
);
if ($response->is_success) {
    print "File downloadedn";
}
else {
    die $response->status_line;
}

是否有办法显示下载状态的百分比?(或类似于wget输出)

10% [===>                                  ]  65.120.154  527K/s 

来自该模块的文档。

ua -> show_progress

ua -> show_progress(布尔美元)

获取/设置一个值,该值指示在处理请求时是否应该在终端上显示进度条。默认为FALSE。

Dave已经回答了你的问题,但我想建议以下两个模块。

  • LWP::UserAgent::ProgressBar: LWP::UserAgent的子类,提供get_with_progresspost_with_progress的附加方法。

  • LWP::UserAgent::ProgressAny:使用Progress::Any框架,因此,它可以用来记录进度到任何输出

最新更新