我不明白常规use local::lib
没有use lib
做什么。有人可以解释一下吗?
答案 0 :(得分:18)
local::lib
如果您未指定目录,则默认为~/perl5
(use lib;
为无操作时)。
在将绝对路径添加到@INC
之前解析绝对路径的相对路径。 (lib
只是按原样添加相对路径。)
在目录名称中展开~
和~user
。
将/lib/perl5
追加到您指定的目录。 (所以use local::lib '/foo';
有点等同于use lib '/foo/lib/perl5';
。)
将DIR/bin
添加到PATH,以便您可以使用本地模块安装的脚本。
答案 1 :(得分:5)
use lib
将一个目录添加到您的模块搜索路径(@INC
)。它对包含use lib
指令的程序或模块之外的任何内容都没有影响。
local::lib
旨在用于启用私有模块安装目录,如果以其建议的方式配置shell环境,则此私有目录将用于所有Perl模块安装(无论是否通过CPAN或者手动make install
)和安装在那里的模块将可用于从local::lib
感知的shell环境中运行的所有Perl程序/模块。
答案 2 :(得分:3)
常规use lib foo
几乎一样简单:
BEGIN { unshift(@INC, foo) }
尽管use local::lib
设置了许多其他Perl环境变量以确保您可以在本地安装模块,但请参阅源代码。