为什么在CentOS上启动时运行的Perl脚本找不到某些模块?

Spe*_*amp 3 linux perl

我目前正在尝试在自定义版本的CENTOS中启动运行perl脚本.

我是通过从rc1脚本调用它来实现的,调用如下所示:

/mydirectory/myscript &
Run Code Online (Sandbox Code Playgroud)

但我收到错误"无法在@INC中找到strict.pm"

这不是strict.pm特有的,它会在使用列表中的第一个模块中抛出该错误.但是,当我从shell运行相同的命令时,它运行没有问题.

那么为什么我的perl脚本在启动时找不到模块呢?

sim*_*que 5

也许@INC来自环境的东西还没有建立起来.它需要通往其库的路径.

您可以使用perl解释器和-I选项显式调用它,也可以设置PERL5LIB环境变量.

PERL5LIB='/usr/lib/perl5' /mydirectory/myscript &
Run Code Online (Sandbox Code Playgroud)

如果有多个文件夹,请用冒号分隔:.

 PERL5LIB='/usr/lib/perl5:/tmp:/etc/lib/perl5' /mydirectory/myscript &
Run Code Online (Sandbox Code Playgroud)

请注意,我不知道你的CentOS中的lib目录在哪里,所以我提出了这条道路.

你可以通过@INC这样的常规shell 打印出来:

$ perl -E 'say for @INC'
Run Code Online (Sandbox Code Playgroud)

将它列出的所有路径附加到您在rc1脚本中进行的调用的环境变量,它应该可以工作.