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"; }