我需要开发一组用于内部工作的Perl模块。我希望所有这些都可以形成一个系列或模块套件,而不是分开。
例如,该套件将类似于:
MySuite::App::Module1
::Module2
MySuite::Env
MySuite::Utils::Logger
::Util2
我经历过perlmodstyle,perlnewmod等,但他们似乎都专注于开发单个模块的技巧。在开发/分发这样的套件时,有哪些提示/最佳实践? (套件中的各个模块可以由不同的开发人员编写)
答案 0 :(得分:2)
与单模块分发没有太大区别。另外两个既定的惯例是:
将模块分层放置在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
选择一个成为分发名称的主模块。您的示例看起来应该有一个额外的lib/MySuite.pm
包语句MySuite
,并且没有太多代码和一些入口点文档。在Build.PL文件中将此模块指定为module_name
。
有关包装的更多信息,请参阅:
对您的进展的反馈/批评可从以下网址获得:
#toolchain
在MagNET 上
答案 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,您会很高兴它将被编入索引。