Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从命令行替换Perl中的@INC_Perl - Fatal编程技术网

从命令行替换Perl中的@INC

从命令行替换Perl中的@INC,perl,Perl,我有一个用于在chroot中运行的perl脚本,现在我希望它在chroot之外运行。这意味着我必须以某种方式指出perl只在/where/chroot/used/to/be/usr/lib而不是/usr/lib中查找库和模块。我尝试使用push@INC在脚本中添加新目录,但是依赖项仍然被破坏,在旧目录中查找 当我运行脚本时,有没有办法告诉perl我只希望它在某些目录中查找库和模块 或者,当常规目录(/usr/bin、/usr/lib等)被非标准目录替换时,是否还有其他更好的方法来确保依赖关系仍然

我有一个用于在chroot中运行的perl脚本,现在我希望它在chroot之外运行。这意味着我必须以某种方式指出perl只在/where/chroot/used/to/be/usr/lib而不是/usr/lib中查找库和模块。我尝试使用push@INC在脚本中添加新目录,但是依赖项仍然被破坏,在旧目录中查找

当我运行脚本时,有没有办法告诉perl我只希望它在某些目录中查找库和模块


或者,当常规目录(/usr/bin、/usr/lib等)被非标准目录替换时,是否还有其他更好的方法来确保依赖关系仍然有效?

要从命令行更改@INC,请使用
-I
选项:

perl -lIadded -e 'print for @INC'
在程序中,您需要尽早修改@INC,即在编译时。这可以通过

BEGIN { unshift @INC, '/path/...' }
或者使用

您还可以设置
PERL5LIB
环境变量:

export PERL5LIB=/path/...
perl -e 'print for @INC'

您可以使用lib在程序中放置任何新目录

范例

use lib "path";
在您的情况下,只需在程序的开头添加这一行即可

use lib "/usr/lib/";

希望这对你有用。

@PerlDog:谢谢你的建议。
use lib "/usr/lib/";