I have perl programs that use Net::Finger
and have run successfully from cron.daily
in Fedora 11.
I just upgraded a server to Fedora 18 and these same perl programs no longer run from cron but run fine from command line when logged in as root.
The error is:
Can't locate Net/Finger.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)
The path to the module is /root/perl5/lib/perl5/Net/Finger.pm
but I can't figure out how to add the path without causing more errors.
Thanks in advance.
See perlfaq8
.
Here are three ways to add arbitrary directories to Perl's module search path.
Set the PERL5LIB
environment variable
15 15 * * 1-5 PERL5LIB=/root/perl5/lib/perl5 /usr/local/bin/perl my_script.pl
Use the -I
command line switch
15 15 * * 1-5 /usr/local/bin/perl -I/root/perl5/lib/perl5 my_script.pl
Use the lib
pragma inside your perl script
#! /usr/local/bin/perl
# my_script.pl: the script that does my thing
use lib '/root/perl5/lib/perl5';
use Net::Finger;
...
Also note that the environment of a cron job is much sparser than the environment of your command line, and in particular the cron environment's $PATH
variable might not be what you expect. If you're not specifying the full path to the Perl executable, verify what $PATH
the cron environment is using and make sure you are running the right version of perl.