如何使用local :: lib与使用lib不同?

时间:2011-01-26 08:41:41

标签: perl locallib

我不明白常规use local::lib没有use lib做什么。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:18)

local::lib

  1. 如果您未指定目录,则默认为~/perl5use lib;为无操作时)。

  2. 在将绝对路径添加到@INC之前解析绝对路径的相对路径。 (lib只是按原样添加相对路径。)

  3. 在目录名称中展开~~user

  4. /lib/perl5追加到您指定的目录。 (所以use local::lib '/foo';有点等同于use lib '/foo/lib/perl5';。)

  5. 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环境变量以确保您可以在本地安装模块,但请参阅源代码。