我在哪里安装我写的Perl模块?

时间:2009-12-07 09:08:27

标签: perl

我写了一些模块,试图运行它们。我怎么知道从哪里取出模块?

我在Windows中写作,并尝试将其放入c:\perl\lib,但它没有帮助。

我可以将它放在与调用模块的文件相同的目录中吗?

3 个答案:

答案 0 :(得分:13)

Perl使用以下路径:

@INC

搜索模块。 (.pm文件)

如果你:

perl -e 'print join "\n", @INC;'

您将看到当前正在搜索模块的路径。 (这个@INC列表被编译成perl可执行文件)

然后你可以:

BEGIN { unshift @INC, 'C:\mylibs' }

use lib 'C:\mylibs'

并将MyModule.pm放在C:\ mylibs中以启用:

use MyModule;

答案 1 :(得分:6)

这正是local::lib旨在处理的问题。默认情况下,use local::lib;会将~/perl5添加到您的模块搜索路径(@INC),但您可以轻松告诉它添加另一个目录。

如果您使用固定目录(而不是相对于主目录的目录),那么您可能与use lib 'PATH'一样好。

如果这是仅用于从命令行运行的代码,则另一个选项是创建指向个人模块目录的PERL5LIB环境变量。这将影响您的用户帐户从命令行运行的所有Perl,因此您无需使用此方法修改Perl代码,但设置非命令行代码(例如,Web脚本)更为棘手),如果代码将由多个用户运行,则需要为所有用户设置PERL5LIB

在任何情况下,我都不建议直接使用@INC。这些天有很多简单的方法可以做到。

答案 2 :(得分:4)

对于特定于应用程序的库,常见的方法是使用FindBin模块找到应用程序目录,然后使用use lib将应用程序的库添加到@INC

use FindBin;
use lib "$FindBin::Bin/lib";
use AppModule;

对于通用模块,我建议以与CPAN版本相同的方式开发它们(例如,以module-starter开头)并使用perl安装它们(通常在site/lib下)。另见:Which framework should I use to write modules?

如果您无法使用perl进行安装(即您没有必要的权限),则可以使用个人库。请参阅perlfaq8中的How do I keep my own module/library directory?