use strict; package Grandpa; sub hello { my $class = ref $_[0] || $_[0]; print "How do you do, from $class.\n"; } package Dad; our @ISA = 'Grandpa'; sub hello { my $class = ref $_[0] || $_[0]; print "Hiya from $class!\n"; } package Me; our @ISA = 'Dad'; package main; my $me = bless {}, 'Me'; # look Ma, no constructor! $me->hello; __END__ % perl say_hello.pl Hiya from Me! #### $me->Grandpa::hello(); __END__ % perl say_hello.pl How do you do, from Me. #### package Me; # ... sub hello { my $self = shift; $self->Dad::hello(); print "I'm just a WILD AND CRAZY GUY!\n"; } #### package Me; #... sub hello { my $self = shift; $self->SUPER::hello(); print "I'm just a WILD AND CRAZY GUY!\n"; } #### package main; my $me = bless {}, 'Me'; $me->SUPER::hello; #### Can't locate object method "hello" via package "main" at hello.pl line 27. #### package Me; $me->SUPER::hello; package main;