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"; } #### my $three = Three->new; $three->do; #### hi Base here hi from pkg one hi from pkg two hi from pkg Three