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;