【发布时间】:2011-06-15 17:09:04
【问题描述】:
我不明白 use local::lib 能做什么,而普通的 use lib 不能。谁能解释一下?
【问题讨论】:
我不明白 use local::lib 能做什么,而普通的 use lib 不能。谁能解释一下?
【问题讨论】:
local::lib
如果您不指定目录,则默认为 ~/perl5(而 use lib; 是空操作)。
在将相对路径添加到 @INC 之前将其解析为绝对路径。 (lib 只是按原样添加相对路径。)
在目录名称中扩展~ 和~user。
将/lib/perl5 附加到您指定的目录。 (所以use local::lib '/foo'; 有点等价于use lib '/foo/lib/perl5';。)
将 DIR/bin 添加到您的 PATH 中,以便您可以使用本地模块安装的脚本。
【讨论】:
use lib 将目录添加到您的模块搜索路径 (@INC)。它对包含use lib 指令的程序或模块之外的任何内容都没有影响。
local::lib 旨在用于启用私有模块安装目录,如果您按照推荐的方式配置 shell 环境,此私有目录将用于所有 Perl 模块安装(无论是通过 CPAN 还是手动make install) 和安装在那里的模块将可用于在您的local::lib-aware shell 环境中运行的所有 Perl 程序/模块。
【讨论】:
普通的use lib foo 几乎就像:
BEGIN { unshift(@INC, foo) }
而use local::lib 设置了许多其他 Perl 环境变量以确保您可以在本地安装模块,请参阅源代码。
【讨论】: