Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I force Perl to run the module from the test directory only?

I have perl module file and test script pl which I use to run some function, and after browsing through the use lib and this previous question here... I still don't know how to do this.

Basically I have a production directory which contains the module file, and I have a test directory file which contains the same module and the test script file. each time I try to run the script file, it will automatically calls the module in the directory. by printing out the @INC, it seems that the production directory is hosted in there. thus I try to remove it by using

no lib qw(prod_dir);

and while printing out the @INC shows that the directory is no longer there, somehow the script is still calling that other module...

I know this probably sounds really dumb, but hope someone can help me see the light here :) thanks.

like image 224
melaos Avatar asked Dec 31 '25 20:12

melaos


1 Answers

After you have required or used the module, check %INC to see where it came from.

For example:

use Data::Dumper;
print $INC{'Data/Dumper.pm'}."\n";

Note that "::" becomes "/" and you append ".pm". That might give you a clue.

Remember that the current directory (".") is usually an entry in @INC. But the first step is finding out what directory the module was loaded from.

Another thing to remember is that the directories in @INC are searched in order. use lib prepends to that list (making it the first-searched directory), so you may just need to add the appropriate directory.

like image 112
cjm Avatar answered Jan 02 '26 11:01

cjm



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!