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

Nig*_*ker 3 perl

我写了一些模块,并尝试运行它们.我怎么知道从哪里取模块?

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

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

zen*_*zen 13

Perl使用以下路径:

@INC
Run Code Online (Sandbox Code Playgroud)

搜索模块.(.pm文件)

如果你:

perl -e 'print join "\n", @INC;'
Run Code Online (Sandbox Code Playgroud)

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

然后你可以:

BEGIN { unshift @INC, 'C:\mylibs' }
Run Code Online (Sandbox Code Playgroud)

要么

use lib 'C:\mylibs'
Run Code Online (Sandbox Code Playgroud)

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

use MyModule;
Run Code Online (Sandbox Code Playgroud)


Dav*_*man 6

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

如果您使用固定目录(而不是相对于您的主目录的目录),那么您可能也同样如此use lib 'PATH'.

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

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