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