Ok, I'm having trouble wrapping my head around your example. And I'm not sure if things are complicated by my particular situation because I rely on SUPER calls. Here's a simplified representation of the classes that have the relationships hard coded:
package Base ;
sub new {
my $class = shift;
bless {}, $class;
}
sub do {
my $s = shift;
print "hi Base here\n";
}
package One ;
use parent 'Base';
sub do {
my $s = shift;
$s->SUPER::do;
print "hi from pkg one\n";
}
package Two ;
use parent 'One';
sub do {
my $s = shift;
$s->SUPER::do;
print "hi from pkg two\n";
}
package Three ;
use parent 'Two';
sub do {
my $s = shift;
$s->SUPER::do;
print "hi from pkg Three\n";
}
And then in a script:
my $three = Three->new;
$three->do;
This, of course, outputs:
hi Base here
hi from pkg one
hi from pkg two
hi from pkg Three