【问题标题】:Where do I install Perl modules that I wrote?我在哪里安装我编写的 Perl 模块?
【发布时间】:2013-10-20 07:55:47
【问题描述】:

我编写了一些模块,并尝试运行它们。我如何知道从哪里获取模块?

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

我可以把它和调用模块的文件放在同一个目录吗?

【问题讨论】:

    标签: perl


    【解决方案1】:

    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;
    

    【讨论】:

      【解决方案2】:

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

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

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

      无论如何,我都不建议直接使用@INC。现在有很多更简单的方法可以做到这一点。

      【讨论】:

        【解决方案3】:

        对于特定于应用程序的库,常见的方法是使用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?

        【讨论】:

          猜你喜欢
          • 2018-06-16
          • 1970-01-01
          • 2011-03-31
          • 2018-03-28
          • 1970-01-01
          • 2016-02-16
          • 1970-01-01
          • 1970-01-01
          • 2013-01-15
          相关资源
          最近更新 更多