Paul and Paul,

Thank you very much !
I heard that OO module usually doesn't export anything,
but I just wanted the difference between use and use base.
Now almost everything is clear for me !

Just one thing, this code seems to work.

-------------------------------------------------------------- Animal.pm
package Animal;
use base qw(Exporter);
our @EXPORT = qw(speak);
sub speak {
print "I speak!\n";
}
1;

---------------------------------------------------------------- farm.pl
use Animal;
speak;

use base qw(Exporter) seems to work.

This means use in farm.pl calls inherited import function using qualified
name as
 Animal::import
right ? (How can I check it ?)

So in summary;
- to use the module Exporter in your module, you use inheritance
- to use the module that use Exporter, you should not use inheritance

Acturelly, I want to know
why we should write
use base qw(Exporter);
but should not write just
use Exporter;

If Exporter exports its import module, then we don't have to manipulate
@ISA, right?
If so, why Export doesn't do it?

If exporting doen't fit OO inheritance, it seems to me weird that we had to
use OO inheritance functionality
to use Export module.

Thank you very much in advance !

Reply via email to