WWW::Mechanize(LWP::UserAgent)でHTTPリクエストの前後に処理をはさみたい

WWW::Mechanizeを使うとリダイレクト処理とかよしなにやってくれて便利。
しかし、うまくクエリパラメータが渡されてないとかになってくると、やっぱり間の状況もしっかり見たくなる。

つまり、curl -Lv URL みたいに、リダイレクトを含めたリクエストログを出したかった。

my $m = WWW::Mechanize->new();

$m->add_handler("request_send", sub {
  my $req = shift;
  say "--- REQ -----------------------------------------------";
  say $req->as_string;
  undef; # 自前でHTTP::Responseを返すと実際のリクエストが飛ばなくなる。なのでundefを返しておく。
});

$m->add_handler("response_done" => sub {
  my $res = shift;
  say "--- RES -----------------------------------------------";
  say $res->message;
  say $res->headers->as_string;
  undef;
});

$m->get('http://wwwwwwwwwwwwwwwwwwwwww')


LWP::UserAgentはhandlerをいくつか持ってるので、その処理に合わせてコールバックを設定することができる。
これを利用して、リクエストの前後に処理を仕込むことができる。


・・・2016年らしからぬ記事を書いてる気がする。