如何解决Perl:将自定义模块从本地 .pm 文件“安装”到 Perl 执行环境中?
这里的 Perl 新手很少有时间和支持来学习 Perl,但管理层希望像 Perl Pro 一样使用它 :)
我在 Cygwin (windows 10) 下使用 Perl (v5.30.2 by Larry Wall)
我的开发人员发布了一个新脚本,该脚本现在使用了我没有的 Perl 模块。
然后他们向我发送了 .pm 文件(他们自己编写的,不在任何在线 Perl 存储库中)。
我无法使用 CPAN 将该文件安装到我的 Perl 执行环境中。
- .pm 文件应该保存在哪里? (请指定确切的文件夹)
- 如何告诉 CPAN 安装此文件以供使用?理想情况下,这是一次性的事情,因为我不想忘记安装这个文件,如果我每次需要运行 Perl 脚本时都必须这样做...
- 以防万一亲爱的回答者可能有任何安全问题:这里没有任何安全问题,这一切都是在没有连接到互联网的环境下进行的。
解决方法
Perl 模块只是一个文件(或文件的集合)。您不必将它们放在任何特殊的地方,但您需要告诉 Perl 在哪里可以找到它们。
当您使用裸字调用 use
或 require
时,Perl 会将该模块名称(如 Some::Module
)翻译成 Some/Module.pm(或其他任何内容)适合您的系统。还有人在使用 VMS 吗?)。
一旦它具有模块的文件名形式,它就会在 @INC
的目录中查找该子路径。它尝试第一个目录。如果它没有找到它,它就会移动到下一个,依此类推。这些目录是在有人配置和安装 Perl 时决定的。并且,在 v5.26 之前,它包含当前工作目录(参见 v5.26 removes dot from @INC 和 Doesn't Perl include current directory in @INC by default?
)
但是,您可以告诉 Perl 去哪里查看。 perlfaq8 有 How do I add a directory to my include path (@INC) at runtime?。池上还在评论中显示了FindBin
(How do I add the directory my program lives in to the module/library search path?)。
除此之外,您可以告诉 require 加载一个路径,尽管您需要确保该程序可以找到该路径,即使有人从另一个目录运行它
require './this_file/over/here';
require '/usr/local/lib/this_file/over/here';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。