perlのLWP::UserAgentでshow_progressを使うと経過がみえて便利

LWP::UserAgentはいろいろ便利なメソッドがついてるんですが、その中にshow_progressというメソッドがついていましてこれは取得するまでの途中経過を表示してくれるんですね。たとえば、すく例ピングなりproxyサーバーとか作ったときに、特定のサイトだけリクエストすると異常に遅いとかうまくいかないとかありますよね。頑張って通信の時間を計測したりしておそらくネットワーク周りだろうというところまで追い詰めたときに最後の決め手を表示してくれます。

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request;

my $ua =  LWP::UserAgent->new;

$ua->agent("your agent");
$ua->timeout(10);
$ua->show_progress(1);

my $request = HTTP::Request->new(GET => 'http://xxxxx.xxxxx/');

my $res = $ua->request($request);
#print length( $res->content ) . "\n";

こんな感じに実行すると

** GET http://xxxxx.xxxxx/ ==> 100%^H^H^H^H302 Found
** GET http://hoge.xxxxx.xxxxx/ ==>  23%^H^H^H^H100%^H^H^H^H200 OK

こんな感じで途中経過みられます。