UNIVERSAL::tap

最近仕事柄Ruby厨でテスト厨なんですけど、久しぶりにリハビリでPerlモジュール書いてみました。

Rubyには、レシーバを引数にブロック評価してレシーバ自身を返すtapという便利なメソッドがあって、気がつけばよく使っているのでこれをPerlに移植してみました。

http://github.com/masaki/UNIVERSAL-tap

# before
my $module = Module->new;

$module->foo;
$module->bar;
$module->baz;

$module->run;

# after
use UNIVERSAL::tap;
my $module = Module->new->tap(sub {
  $_[0]->foo;
  $_[0]->bar;
  $_[0]->baz;
})->run;

例がアレなのでメリットを感じられない気もしますが、メソッドチェーン最高!という人にはうってつけですね。