我有一个 perl 脚本,手动运行时工作正常,但它不与 cron 一起运行。我的 Perl 脚本有以下语句,因此它不起作用 [从日志文件中查找] -
push(@INC, '/var/a.pm');
我不知道如何解决,请帮帮我。
您应该将目录名推送到 @INC 目录中,而不是文件名。试试这个:
BEGIN { push @INC, '/var'; }; ## use BEGIN so we can "use" modules
## now this will work
use a;
如果这不起作用,您将需要对收到的错误进行更多描述。
lib
模块将为您构建@INC
。在加载模块之前添加它:
use lib qw(/var);
use a;
但是,如果我有很多 cron 脚本想要使用相同的目录,我也会在 crontab 中使用
PERL5LIB
。当我不想更改源时(可能因为它是供应商的事情),这很方便:
PERL5LIB=/var
*/5 * * * * perl script.pl
还有:
*/5 * * * * env PERL5LIB=/var script.pl