WWW::Curlで進捗表示しつつダウンロード
意味のないエントリー
perl - LWP::UserAgentで進捗表示しつつダウンロード
WWW::Curlだとcurlの機能でできるYo
#!/usr/bin/perl use strict; use warnings; use WWW::Curl::Easy; use File::Basename; my $uri = shift || die "$0 http://example.com/big.iso [filename]"; my $filename = shift || basename($uri); open my $content, '>', $filename or die "$filename:$!"; open(my $header, '>', \my $header_data); my $curl = WWW::Curl::Easy->new(); $curl->setopt( CURLOPT_WRITEDATA, $content); $curl->setopt( CURLOPT_WRITEHEADER, $header); $curl->setopt(CURLOPT_NOPROGRESS, 0); $curl->setopt(CURLOPT_FOLLOWLOCATION, 1); $curl->setopt(CURLOPT_TIMEOUT, 30); $curl->setopt( CURLOPT_URL, $uri ); $curl->perform();
CURLOPT_NOPROGRESSのオプションだけ。
callbackもできるみたい。使い方はWWW::Curlのテストが参考になります
header情報が欲しい場合は、$header_dataをHTTP::HeaderとかでparseすればOK。
その際、s/\r\n/\n/gが必要なので注意
FOLLOWLOCATIONした場合のURIは、
my $effective_uri = $curl->getinfo(CURLINFO_EFFECTIVE_URL)
でとれるのかなぁ。(未確認)