我可以在不破坏系统的情况下移动perl模块吗?

时间:2018-05-24 10:22:56

标签: perl path include

我有这里描述的确切问题: Perl can't find module when run from cron.daily,但我的问题适用于从crontab运行的perl脚本。

在我的情况下,错误消息是:

May 24 22:12:02 trackcam3 test_cron: Can't locate Image/Grab.pm in @INC (you may need to install the Image::Grab module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/arm-linux-gnueabihf/perl5/5.24 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base) at /home/darren/upload_image.pl line 33, <DATA> line 1.
May 24 22:12:02 trackcam3 test_cron: BEGIN failed--compilation aborted at /home/darren/upload_image.pl line 33, <DATA> line 1.

链接上的解决方案都为路径添加了一些东西。我想知道是否可以将模块移动或复制到crontab中的perl脚本时可以找到的位置。

作为故障排除的一部分,我已经使用与终端相同的PATH加载了cron,但这还不足以让我们找到perl模块。

缺少的模块位于~/perl5/lib/perl5,不在@INC

位于

的相同perl脚本调用模块
/usr/lib/arm-linux-gnueabihf/perl5/5.24/Image/Magick

它应该在别的地方吗?目前/usr/lib/perl5是空的。链接中的OP在链接中询问了相同的问题但未收到答案。

2 个答案:

答案 0 :(得分:0)

尝试:

use lib glob( '~/perl5/lib/perl5' );
use Image::Grab;

use lib必须在许多use模块之前。

答案 1 :(得分:-1)

按照@haukex的以下评论中的链接获得完整的解释。