http://qs1969.pair.com?node_id=579968

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

Fellow monks,
I'm getting unexpected behavior using  use lib; It seems that the only directory my module can be found in is a subdirectory of the directory out of which the pages are being served. Also, when I don't  use lib; and put the module in my PERL5LIB directory, Perl complains that it cannot be found. I have verified that all is setup correctly. Here is what I have: (in the script)
use lib "/home/davidj/perl/lib/survey";
directory listing:
andromeda:davidj lib > pwd /home/davidj/perl/lib/survey andromeda:davidj survey > ls -l total 4 -rw-r--r-- 1 davidj users 1444 Oct 23 03:09 survey.pm
http error output:
[Mon Oct 23 03:23:49 2006] [error] [client 127.0.0.1] Can't locate sur +vey.pm in @INC (@INC contains: /home/davidj/perl/lib/survey /usr/lib/ +perl5/site_perl/5.8.8/i386-linux-thread-multi .....
I have tested other directories and nothing seems to work. However, if I do this:
use lib "/var/www/cgi-bin/survey/lib/";
and put the module file in that directory, with the pages being served out of /var/www/cgi-bin/survey, it all works fine.

It is fine for me to store modules in the application subdirectories. I'm just wondering why Perl cannot find them anywhere else, including my exported PERL5LIB directory.

davidj