9.3 Accessing the Instance Data


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]

[5] If you come from another OO language background, you might choose $this or $me for the variable name, but you'll probably confuse most other Perl OO-hackers.

Then $self is dereferenced as a scalar reference, yielding Mr . Ed . The result is:

 Mr. Ed says neigh. 


Learning Perl Objects, References & Modules
Learning Perl Objects, References, and Modules
ISBN: 0596004788
EAN: 2147483647
Year: 2003
Pages: 199

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net