note
brian_d_foy
<p>
I changed this around to do it for arbitrary coderefs, since I get to deal with some that come from other sources. Instead of catching them at definition time, I "enchant" them later.
</p>
<p>
This looks like it could be a useful decorator if I work on the concept a little more. So Randal, who wants to upload it to CPAN first?
</p>
<code>
#!/usr/bin/perl
my $a = sub { print "I am A\n" };
my $b = sub { print "I am B\n" };
$a->();
$b->();
$c = MagicalCodeRef->enchant( $a );
$a->();
print STDERR "That was $a I just called\n";
BEGIN {
package MagicalCodeRef;
use overload '""' => sub
{
require B;
my $ref = shift;
my $gv = B::svref_2object($ref)->GV;
sprintf "%s:%d", $gv->FILE, $gv->LINE;
};
sub enchant { bless $_[1], $_[0] }
}
</code>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-366986">
-- <br />
brian d foy <bdfoy@cpan.org>
</div></div>
413725
413725