Because you get the instance as the first parameter, you can now access the instance-specific data. In this case, let's add a way to get at the name : { package Horse; @ISA = qw(Animal); sub sound { "neigh" } sub name { my $self = shift; $$self; } } Now you call for the name: print $tv_horse->name, " says ", $tv_horse->sound, "\n"; Inside Horse::name , the @_ array contains just $tv_horse , which the shift stores into $self . It's traditional to shift the first parameter into a variable named $self for instance methods , so stay with that unless you have strong reasons otherwise . Perl places no significance on the name $self , however. [5]
Then $self is dereferenced as a scalar reference, yielding Mr . Ed . The result is: Mr. Ed says neigh. |