Hopefully someone can alleviate my confusion w.r.t. when to use Exporter/@ISA when subclassing.
My code - which works as expected:However, if I uncomment #our @ISA = qw(Exporter); Then I get the errorpackage MyClass::A; use strict; use warnings; use Exporter; use base qw(Net::Server::PreFork); #our @ISA = qw(Exporter); our @EXPORT = qw(new serve); our @EXPORT_OK = qw(); sub new { my ($class_name) = @_; my $self = {}; bless $self, $class_name; #... return $self; } sub process_request { #... } sub serve { my ($self) = @_; MyClass::A->run(); return $self; } my $s = MyClass::A->new(); $s->serve();
Can't locate object method "run" via package "MyClass::A" at b.pl line + 28.
I normally create all my classes using our @ISA = qw(Exporter);, so I'm not clear on why this is failing now. Is it because I'm sub-classing Net::Server::PreFork?
Second - and I suppose related - question is that if I comment out as follows:
#use Exporter; use base qw(Net::Server::PreFork); #our @ISA = qw(Exporter);
everything still works normally, so why on earth should I bother with Exporter anyway?
ThanksIn reply to Exporter/@ISA confusion by qhen
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |