By changing the Animal class to the SUPER class in that invocation, you get a search of all your superclasses (classes listed in @ISA) automatically:
{ package Animal; sub speak { my $class = shift; print "a $class goes ", $class->sound, "!\n"; } } { package Mouse; @ISA = qw(Animal); sub sound { "squeak" } sub speak { my $class = shift; $class->SUPER::speak; print "[but you can barely hear it!]\n"; } }
Thus, SUPER::speak means to look in the current package's @ISA for speak, invoking the first one found if there's more than one. In this case, you look in the one and only base class, Animal, find Animal::speak, and pass it "Mouse" as its only parameter.
Copyright © 2003 O'Reilly & Associates. All rights reserved.