X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FObject-Tap.git;a=blobdiff_plain;f=lib%2FObject%2FTap.pm;h=ccffbcbdb103e02a12d3e63029fc361a7cafae1a;hp=cecdbd24030fbd8b402328c7c12248097dc26567;hb=9d1b22e38282b95ee984108bbef40a6284b243a2;hpb=fa439824044543d4eec0cc1c1697520118624e30 diff --git a/lib/Object/Tap.pm b/lib/Object/Tap.pm index cecdbd2..ccffbcb 100644 --- a/lib/Object/Tap.pm +++ b/lib/Object/Tap.pm @@ -8,7 +8,11 @@ our $VERSION = '1.000006'; # TRIAL our @EXPORT = qw($_tap); -our $_tap = sub { my ($obj, $call, @args) = @_; $obj->$call(@args); $obj }; +our $_tap = sub { + my ($obj, $call, @args) = @_; + $obj->$call(@args) for $obj; + $obj +}; 1; @@ -30,6 +34,12 @@ you can instead write - my $thing = My::Class->new(...)->$_tap(sub { $_[0]->set_foo(1) }); +We also alias $_ to $_[0] within the subroutine so: + + my $thing = My::Class->new(...)->$_tap(sub { $_->set_foo(1) }); + +also works. + To realise why this might be useful, consider instead - My::App->new(...)->$_tap(...)->run;