ウェブサービス等のAPI とやり取りするモジュールを使って開発している際、デバッグのためAPI からのレスポンスをのぞき見たいときがあると思います(自分はさっきありました)。
そんなとき、関数をラップすると便利です。
my $orig_request = LWP::UserAgent->can('request');
*LWP::UserAgent::request = sub {
use Data::Dumper;
my $response = $orig_request->(@_);
print Dumper($response);
return $response;
};
use Hook::LexWrap;
wrap 'LWP::UserAgent::request',
post => sub {
use Data::Dumper;
my $response = $_[-1];
print Dumper($response);
};
各ラッパー関数にはラップ元の関数と同じ引数リストが渡されます。加えて$_[-1]
に関数の戻り値が設定されます。
$_[-1]
を変更することで関数の最終的な戻り値を変更できます。
つぎはkoyachiさんお願いします。