use 5.010; use strict; use warnings; use Test::More; { package Level1; sub new { bless {}, shift }; sub display { "Base" }; } { package Level2; use base qw(Level1); # just inherit from Level1 } { package Level3; use base qw(Level2); sub display { "Overridden" }; } { package Level4; use base qw(Level3); sub display { shift->Level2::display(@_) }; } is( Level4->new->display, "Base" ); done_testing;