我写了一些模块,并尝试运行它们.我怎么知道从哪里取模块?
我在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)
这正是local :: lib旨在处理的问题.默认情况下,use local::lib;将预先添加~/perl5到模块搜索路径(@INC),但您可以轻松地告诉它添加另一个目录.
如果您使用固定目录(而不是相对于您的主目录的目录),那么您可能也同样如此use lib 'PATH'.
如果这是仅用于从命令行运行的代码,则另一个选项是创建PERL5LIB指向个人模块目录的环境变量.这将影响您的用户帐户从命令行运行的所有Perl,因此您无需使用此方法修改Perl代码,但设置非命令行代码(例如,Web脚本)更为棘手并且,如果代码将由多个用户运行,PERL5LIB则需要为所有用户设置代码.
@INC在任何情况下我都不建议直接使用.这些天有很多简单的方法可以做到这一点.