in reply to Undefining subroutines and inheritance
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;
|
|---|