2016-11-09 139 views
8

我正在使用LWP :: UserAgent和:content_file选项将大文件直接下载到Perl文件。显示LWP :: UserAgent下载进度

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

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 downloaded\n"; 
} 
else { 
    die $response->status_line; 
} 

有没有什么办法来显示的下载状态的百分比是多少? (或类似的东西来wget输出)

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

回答

9

documentation for the module

$ UA-> show_progress

$ UA-> show_progress($布尔值)

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

+0

就是这样!我不敢相信这很容易,谢谢! – nanocv

+0

另外,请看一下ActivePerl安装的/ bin/lwp-download源代码。 –

+3

@KostiaShiian:lwp-download不是特定于ActivePerl的。它[可从CPAN获得](https://metacpan.org/pod/distribution/libwww-perl/bin/lwp-download)。 –

3

Dave已经回答了您的问题,但我想建议下面2个模块。

+0

谢谢!我会看看他们两个。 – nanocv

+0

LWP :: UserAgent :: ProgressBar提供了一个非常符合OP想法的进度条。如果这是一个问题,那么它就不太可能已经安装好了(例如,为了便携性) – Randall