Problems with using Autoloader

B

Brian McCauley

Augustus said:
I am using perl 5.005 on solaris 8.0. I have also tried this with 5.8.x
on linux.

Here is my problem.
I am trying to use AutoLoader functionality in one of my modules.

I have put
use AutoLoader 'AUTOLOAD' ;

and my functions (e.g. testProc) after __END__ in my module file.

I generated the module by h2xs -Xn myModule
then edited the myModule/myModule.pm with the the data above.

After that perl Makefile.pl PREFIX=$HOME/myPerlModules

After that "make install", which installs the module in
$HOME/myPerlModules.
It also creates the auto/myModules dir with the necessary files under
$HOME/myPerlModules.

Now in my script I do

use lib '/home/user/myPerlModules' ;
use AutoLoader 'AUTOLOAD' ;
testProc("123");

I get the message
Can't localte auto/main/testProc.al in @INC ....

My question is , why is it looking for auto/main instead of auto/testProc ?

Becuase it was main that installed AutoLoader. There is nothing in your
script that even mentioned myModule.

You need to use myModule not AutoLoader in your script. For example see
any module that uses AutoLoader.
I also tried myModule::testProc , but I get can't locate
myModule/testProc.pm

I do not believe you.
I also tried
use myModule 'testProc' ; But I get testProc is not exported. I haven't
added testProc to @EXPORT or @EXPORT_OK, but I thought with AutoLoader it
is not needed.

You thought wrong.
So what am I missing here ?

It's not so much that you are missing something but that you are seeing
something that is not there. The AutoLoader and Exporter menchanisms
are more-or-less orthogonal.
 
A

Augustus

I am using perl 5.005 on solaris 8.0. I have also tried this with
5.8.x on linux.

Here is my problem.
I am trying to use AutoLoader functionality in one of my modules.

I have put
use AutoLoader 'AUTOLOAD' ;

and my functions (e.g. testProc) after __END__ in my module file.

I generated the module by h2xs -Xn myModule
then edited the myModule/myModule.pm with the the data above.

After that perl Makefile.pl PREFIX=$HOME/myPerlModules

After that "make install", which installs the module in $HOME/myPerlModules.
It also creates the auto/myModules dir with the necessary files under
$HOME/myPerlModules.

Now in my script I do

use lib '/home/user/myPerlModules' ;
use AutoLoader 'AUTOLOAD' ;
testProc("123");

I get the message
Can't localte auto/main/testProc.al in @INC ....

My question is , why is it looking for auto/main instead of auto/testProc ?
I also tried myModule::testProc , but I get can't locate
myModule/testProc.pm

I also tried
use myModule 'testProc' ; But I get testProc is not exported. I haven't
added testProc to @EXPORT or @EXPORT_OK, but I thought with AutoLoader it
is not needed.

So what am I missing here ? any help greatly appriciated .
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top