Learning Perl Objects, References amp;amp; Modules [Electronic resources]

Randal L. Schwartz

نسخه متنی -صفحه : 199/ 82
نمايش فراداده

8.8 The SUPER Way of Doing Things

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.