in reply to Re^2: Reversing (some of) inheritance
in thread Reversing (some of) inheritance

So I'm not necessarily thinking that every function needs to be replaced in the "parent" module. Merely an arbitrary subset

Cool; that's what my approach above allows.

So, I tested the idea using Exporter, and it works just fine. (There is one glitch, though: you get "redefined" warnings which cannot be silenced merely by doing no warnings just before the import call. Apparently Exporter turns on such warnings explicitly. Perhaps someone who is more expert on Exporter can explain how to silence the warnings.)
Extending it to let the caller define the set of methods to override:

. . . sub override_Foo { my $pkg = shift; local @Bar::EXPORT = @_; package Foo; # how dare we! Bar->import; } # and then: Bar->override_Foo(qw( new method2 ));