QA

 <  Day Day Up  >  

Q&A

Q1:

Can I put functions in my class, and call them directly without an object?

A1:

Yes. In object-oriented terminology these are called class methods . To call a subroutine named doit (and retrieve its value) in a class named Widget you can do any of the following:

 $value = Widget->doit(); $value = Widget::doit(); $value = doit Car; 

The last one may look odd, but it's a piece of syntax sugar that means the same thing as the others.

Q2:

This hour missed a lot of object-oriented stuff. There was no inheritance! No polymorphism!

A2:

There's far, far too much to cover in an hour. Perl includes these manual pages dedicated to objects: perlboot, perltoot, perltootc, perlobj, and perlbot. For an entire book on Perl objects, I'd recommend Object Oriented Perl by Damian Conway.

Q3:

If my object has lots and lots of properties, how can I access them if I don't want to create a function for each one of them?

Q4:

If you call a method on an object, and that method doesn't exist in the class, Perl looks for a subroutine named AUTOLOAD and calls that instead. The first argument will be the object, the remaining arguments will be passed as well, and a special variable called $AUTOLOAD will be set to the class::method name you were trying to access. Here's a simple autoloader that could be used to implement a new method called filename in your TYPFileInfoOO class.

 our($AUTOLOAD);  # This goes near the top of the class sub AUTOLOAD {   # This can go anywhere     my($self, $value)=@_;     my($property)=($AUTOLOAD=~m/::(.*?)$/);     die "No property $property" unless exists $self->{$property};     if (defined $value) {         return $self->{$property}=$value;     } else {         return $self->{$property}     } } 

If a property does not exist inside of $self , the AUTOLOAD subroutine dies. If it does, the property value is changed to $value if $value is defined; otherwise it's returned.

If you add more key/value pairs to the hash, this AUTOLOAD will give you access to them as properties.

 <  Day Day Up  >  


SAMS Teach Yourself Perl in 24 Hours
Sams Teach Yourself Perl in 24 Hours (3rd Edition)
ISBN: 0672327937
EAN: 2147483647
Year: 2005
Pages: 241

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