my $obj = child->new(); $obj->do_something(); my $obj2 = child2->new(); $obj2->do_something(); exit; package parent; use Data::Dumper; sub do_something { warn Dumper { 'caller' => [ caller ] }; } sub new { my $class = shift; return bless {}, $class }; package child; use base qw( parent ); sub do_something { my $self = shift; $self->SUPER::do_something; } package child2; use base qw( parent ); sub do_something { goto &{'parent::do_something'}; }