# taken from: http://perldoc.perl.org/perlobj.html use strict; use warnings; use 5.014; package A; sub new { return bless {}, shift; } sub speak { my $self = shift; $self->SUPER::speak(); say 'A'; } package B; use parent 'A'; sub speak { my $self = shift; $self->SUPER::speak(); say 'B'; } package C; use parent 'B'; sub speak { my $self = shift; $self->SUPER::speak(); say 'C'; } my $c = C->new(); $c->speak();