从cron.daily运行时,Perl无法找到模块

Xi *_*Vix 5 perl cron perl-module

我有perl程序使用Net::Fingercron.daily在Fedora 11中成功运行.
我刚刚将服务器升级到Fedora 18,这些相同的perl程序不再从cron运行,但在以root身份登录时从命令行运行正常.
错误是:

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 .)
Run Code Online (Sandbox Code Playgroud)

模块的路径是/root/perl5/lib/perl5/Net/Finger.pm但我无法弄清楚如何添加路径而不会导致更多错误.提前致谢.

mob*_*mob 13

perlfaq8.

以下是将任意目录添加到Perl模块搜索路径的三种方法.

  1. 设置PERL5LIB环境变量

    15 15 * * 1-5 PERL5LIB=/root/perl5/lib/perl5 /usr/local/bin/perl my_script.pl
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用-I命令行开关

    15 15 * * 1-5 /usr/local/bin/perl -I/root/perl5/lib/perl5 my_script.pl
    
    Run Code Online (Sandbox Code Playgroud)
  3. lib在perl脚本中使用pragma

    #! /usr/local/bin/perl
    # my_script.pl: the script that does my thing
    use lib '/root/perl5/lib/perl5';
    use Net::Finger;
    ...
    
    Run Code Online (Sandbox Code Playgroud)

另请注意,cron作业的环境比命令行的环境更稀疏,特别是cron环境的$PATH变量可能不是您所期望的.如果您没有指定Perl可执行文件的完整路径,请验证$PATHcron环境正在使用的内容,并确保您运行的是正确版本的perl.