my $x = SubClass->new; # inherits from SuperClass $x->method; # calls SubClass::method { local @FAKE::ISA = @{ ref($x) . "::ISA" }; $x->FAKE::method; # calls SuperClass::method } $x->method; # calls SubClass::method
my $x = SubClass->new; # inherits from SuperClass $x->method; # calls SubClass::method { # save the glob... local *old = *{ ref($x) . "::method" }; # localize the glob... local *{ ref($x) . "::method" }; # and restore everything else ${ ref($x) . "::method" } = $old; @{ ref($x) . "::method" } = @old; %{ ref($x) . "::method" } = %old; # technically incomplete $x->method; # calls SuperClass::method } $x->method; # calls SubClass::method
These are gross. That's why I want to be able to say:my $x = SubClass->new; # inherits from SuperClass $x->method; # calls SubClass::method { my $pkg = ref $x; eval qq{ package $pkg; \$x->SUPER::method; # calls SuperClass::method }; } $x->method; # calls SubClass::method
local &foo;
In reply to Re: Undefining subroutines and inheritance
by japhy
in thread Undefining subroutines and inheritance
by bikeNomad
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |