バッチ処理がやたらメモリくってると思ったら、なんかおっきいファイルをgetしてたせいでした orz
一旦ファイルに吐き出して、後でopenして使いたいような場合は、LWPでは、
my $ua = LWP::UserAgent->new(); $ua->get('http://example.com/big_file.gz', ':content_file' => '/path/to/big_file.gz');
Furlの場合、write_fileオプションを使います。こちらはファイルハンドル。
my $f = Furl->new(); open my $fh, '>', $filename; $f->request(url => 'http://example.com/big_file.gz', write_file => $fh);
Furl::HTTPのドキュメントにあるけど、Furlのドキュメントから抜けてる?
# ファイルに書くなら、curl/wgetでいいよねっていう話もある。
ちなみに、gzipされたファイルを読み出したりするのは、PerlIO::via::gzip とか使える。
http://search.cpan.org/~majensen/PerlIO-via-gzip-0.021/lib/PerlIO/via/gzip.pm
# 別に、gunzipしたらいいよねっていう話もある。
ちなみに、読みつつ処理するのは、LWP::UsearAgentだと、:content_cb。Furlだと、write_code。
LWP::UserAgentの例は以下で。
http://blog.livedoor.jp/dankogai/archives/51141631.html
Furlのドキュメントにはプログレスバーの例が載ってます。
http://search.cpan.org/~tokuhirom/Furl-0.37/lib/Furl.pm#FAQ