in reply to Re^2: SUPER or NEXT from imported methods
in thread SUPER or NEXT from imported methods
You have the right idea with the eval approach, but I was suggesting something more like this:
Also note that your imported symbol can make use of closure variables without interpolating them. If you put \$foo in your code, that will be compiled as $foo, and that will pick up any lexical $foo that is in scope when the eval happens.sub import { my $package = shift; my $methodname = shift; my $dest = caller; my $compiled_in = __PACKAGE__; # The initial comment improves error messages. eval qq{# line 1 "Loaded by $compiled_in\::import" package $package; sub $methodname { return shift->SUPER::blah(); } }; die $@ if $@; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: SUPER or NEXT from imported methods
by jsadusk (Acolyte) on Feb 21, 2009 at 03:35 UTC |