package Before; my %looper; use overload '&{}' => sub { my ( $f ) = @_; my $fs = overload::StrVal($f); if( $looper{$fs} ){ print "$fs got looper already\n"; return $looper{overload::StrVal($f)}; } else { my $looper = 0; my $s = sub { $looper++; print "$fs Stuff before (looper=$looper)\n"; goto &$f unless $looper > 1; }; $looper{$fs} = $s; return $s; } }; package main; ( bless sub {} => 'Before' )->() __END__ Before=CODE(0x18305e4) Stuff before (looper=1) Before=CODE(0x18305e4) got looper already Before=CODE(0x18305e4) Stuff before (looper=2)
In reply to Re: Overloading without infinite descent
by Anonymous Monk
in thread Overloading without infinite descent (fixed by time: see Perl 5.10.1)
by JadeNB
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |