Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

ISA not finding package when use does

by set_uk (Pilgrim)
on Dec 08, 2003 at 15:45 UTC ( [id://313113]=perlquestion: print w/replies, xml ) Need Help??

set_uk has asked for the wisdom of the Perl Monks concerning the following question:

I have created a few packages before. I have not had any problem them with being picked up. As they reside in a subdirectory of where the script is running.
dir script subdir package
Now trying to inherit from the packages in the subdir and although both the package and the package which is inherited from are both in the same directory and the script is in the same place it errors as follows:-
./tobj.pl Can't locate package SDU::CommandHandler for @SDU::CommandHandlerSDU:: +ISA at ./tobj.pl line 4 (#1) (F) You said to do (or require, or use) a file that couldn't be found. Perl looks for the file in all the locations mentioned in @ +INC, unless the file name included the full path to the file. Perhaps +you need to set the PERL5LIB or PERL5OPT environment variable to say w +here the extra library is, or maybe the script needs to add the library + name to @INC. Or maybe you just misspelled the name of the file. See perlfunc/require and lib. Can't locate package SDU::CommandHandler for @SDU::CommandHandlerSDU:: +ISA at ./tobj.pl line 14 (#1) Can't locate object method "new" via package "SDU::CommandHandlerSDU" +at ./tobj.pl line 14 (#1) Uncaught exception from user code: Can't locate object method "new" via package "SDU::CommandHand +lerSDU" at ./tobj.pl line 14.
I have enough info to fix this but when doing an ISA search doesn't perl look in the same places as when doing a use or require search?
Simon

Replies are listed 'Best First'.
Re: ISA not finding package when use does
by Corion (Patriarch) on Dec 08, 2003 at 15:50 UTC

    Before you put a class into the @ISA, you should have loaded that base class by using it. The base pragma does both steps for you though:

    package SDU::CommandHandlerSDU; use base 'SDU::CommandHandler';

    My guess is, that you are not using the base pragma and you are also not loading the package SDU::CommandHandler into your namespace, but it is hard to tell, as you didn't post your script ./tobj.pl for inspection either.

    perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The $d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider ($c = $d->accept())->get_request(); $c->send_response( new #in the HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web
      Thanks that sorted it. Believe it or not I did read about before posting - just not in the right place :-)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://313113]
Approved by blokhead
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (4)
As of 2024-04-18 04:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found