开发一套Perl模块的技巧

时间:2012-03-15 00:43:33

标签: perl perl-module

我需要开发一组用于内部工作的Perl模块。我希望所有这些都可以形成一个系列模块套件,而不是分开。

例如,该套件将类似于:

MySuite::App::Module1
            ::Module2
MySuite::Env
MySuite::Utils::Logger
              ::Util2

我经历过perlmodstyleperlnewmod等,但他们似乎都专注于开发单个模块的技巧。在开发/分发这样的套件时,有哪些提示/最佳实践? (套件中的各个模块可以由不同的开发人员编写)

2 个答案:

答案 0 :(得分:2)

与单模块分发没有太大区别。另外两个既定的惯例是:

  1. 将模块分层放置在lib目录中。

    MySuite::App::Module1       →   lib/MySuite/App/Module1.pm
    MySuite::App::Module2       →   lib/MySuite/App/Module2.pm
    MySuite::Env                →   lib/MySuite/Env.pm
    MySuite::Utils::Logger      →   lib/MySuite/Utils/Logger.pm
    MySuite::Utils::Util2       →   lib/MySuite/Utils/Utils2.pm
    
  2. 选择一个成为分发名称的主模块。您的示例看起来应该有一个额外的lib/MySuite.pm包语句MySuite,并且没有太多代码和一些入口点文档。在Build.PL文件中将此模块指定为module_name


  3. 有关包装的更多信息,请参阅:

    对您的进展的反馈/批评可从以下网址获得:

答案 1 :(得分:1)

使用perl附带的h2xs命令行工具。它将创建一个非常有用的perl模块框架(特别适合在CPAN上分发)。输入你的shell:

  

$ h2xs -X MySuite

这将创建一个单独的发行版,其中特定的模块框架放在lib中。  研究它并在lib下面根据需要创建其他.pm文件。研究源中的“包”行并匹配文件路径;你应该得到基本的想法。例如:

  $ cd MySuite
  $ touch -p lib/MySuite/App/Module.pm
  $ touch -p lib/MySuite/Env.pm
  $ ...

是向您的发行版添加更多模块的基本步骤。每当您添加另一个.pm文件或更改文件名时,请发出

  $ perl Makefile.PL  (only first time or "Makefile" not present)
  $ make manifest

同步您的MANIFEST文件;它将添加模块分发中的所有文件。这允许您使用

  $ make dist

为您创建MySuite-0.1.tar.gz存档。最后,您可以使用以下方法测试您的套件:

  $ make test

总之,h2xs对于模块作者来说非常方便,并且负担了准备基本模块分发基础架构的负担。它创建占位符以填充特定文档并创建一个Makefile来管理您的分发 - 随着它变大,您会欣赏它。将您的模块发送到CPAN,您会很高兴它将被编入索引。