When the .pm file will not be in the same directory as the main script, I'm fond of using the lib pragma.
Even when it is in the same directory.
$ dir test/ total 8 -rw------- 1 eric users 21 2009-06-02 10:53 Module.pm -rwx------ 1 eric users 29 2009-06-02 10:54 script.pl* $ cat test/script.pl #!/usr/bin/perl use Module; $ cat test/Module.pm package Module; 1; $ test/script.pl Can't locate Module.pm in @INC (@INC contains: /home/eric/lib/perl5/i4 +86-linux-gnu-thread-multi /home/eric/lib/perl5 /etc/perl /usr/local/l +ib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/p +erl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl . +) at test/script.pl line 2. BEGIN failed--compilation aborted at test/script.pl line 2.
It's bad to assume the working directory is set to the directory in which the script resides. Fix:
use Cwd qw( realpath ); use File::Basename qw( dirname ); use lib dirname(realpath($0));
In reply to Re^2: perl beginner question
by ikegami
in thread perl beginner question
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |