Perl 我应该使用哪个框架来编写模块?

Perl 我应该使用哪个框架来编写模块?,perl,perl-module,Perl,Perl Module,编写模块的最佳框架是什么——(h2xs)还是?两者都有利弊。现在我使用并推荐Module::Build和Module::Starter。EU::MM似乎仍然是最广泛支持和流行的,但Module::Build正在迎头赶上。另外,请查看有助于入门的模块。我还建议使用module::Build和module::Starter(带)。module::Build无论如何都比ExtUtils::MakeMaker更好,但它的支持范围不如ExtUtils::MakeMaker(更具体地说,旧版本的Perl不支

编写模块的最佳框架是什么——(h2xs)还是?

两者都有利弊。现在我使用并推荐Module::Build和Module::Starter。

EU::MM似乎仍然是最广泛支持和流行的,但Module::Build正在迎头赶上。另外,请查看有助于入门的模块。

我还建议使用module::Build和module::Starter(带)。

module::Build无论如何都比ExtUtils::MakeMaker更好,但它的支持范围不如ExtUtils::MakeMaker(更具体地说,旧版本的Perl不支持开箱即用)。这取决于你的需要。

这里有两个问题

首先,不要使用H2X。这已经过时了,虽然我想如果你真的想把一个头文件转换成XS代码,它可能会很有用(我自己从来没有这样做过)

2011更新:我强烈建议您查看一下,特别是如果您认为您将维护多个模块。

要创建新模块,请使用module::Starter。它工作得很好,并且有一些很好的插件用于定制输出

第二,你在问你应该使用什么构建系统。这三个竞争者是ExtUtils::MakeMaker(EUMM)、Module::Build(MB)和Module::Install(MI)

EUMM是一项非常讨厌的工作,但它可以工作,如果您根本不自定义构建过程,它就可以工作

MB是新来的孩子,它有它的批评者。它的一大优点是,如果您想大量定制您的安装和构建过程,那么使用MB明智地(并且以跨平台的方式)完成这项工作是完全可能的。使用EUMM确实是不可能的

最后,MI基本上是EUMM之上的声明性包装器。它还将自己与发行版一起打包,试图解决用户试图使用旧工具链模块安装模块时遇到的问题。“包自身”技巧的缺点是,如果MI本身存在缺陷,您必须重新发布所有模块来修复它

就定制而言,有一些MI插件,但如果你想超越它们,你将回到处理Makefiles和跨十几个平台构建工具的问题上来,因此它在这方面对你没有太大帮助。

我刚刚上传到CPAN。这就是我用来制作新发行版的东西。它的好处在于,您的发行版可以是您喜欢的任何版本:您只是在制作一些模板。我不管有没有人用它。对我来说,这很简单,技术含量低,不会造成额外的问题

您可以从制作初学者模板开始,然后添加自己的样板和最喜欢的做事方式。您不仅可以选择每个文件中所需的内容,还可以选择发行版中显示的文件。当你弄清楚你喜欢做什么的时候,你只需要更新你自己的模板

至于Makemaker和Module::Build,未来是Module::Build。现在只有我们这些老家伙在使用Makemaker了。:)有两种方法可以同时使用(或假装同时使用)。查看Module::Build、Module::Build::Compat和Module::Install文档。Module::Build被从Perl的标准库中踢出,它的未来是不确定的。它作为一个构建系统回到Makemaker


虽然这是一个有点逃避现实的答案,但试着使用每种方法只是为了获得一点经验。

就我个人而言,我建议安装Module::Install,我认识的很多人也这么做,比如Catalyst和Moose的人也使用它

以下是我希望回应的方向:

  • 各种框架的优缺点
  • 框架的兼容性/安装基础
  • 内部(本地)与外部(CPAN)释放的适用性
  • 不是简单的“使用X”答案

有一些好的赞成/反对信息。暗指兼容性,但并不明确。因为,只有旧的hats使用EUMM,但我不相信MB是用于CPAN的好框架,因为它直到5.9才成为核心的一部分。

关于Module::Build兼容性的唯一问题是当用户尝试安装模块而不更新其CPAN客户端(CPAN.pm或CPANPLUS.pm)时如果他们是从CPAN安装您的模块,他们可以同样轻松地从同一镜像升级其客户机

如果您不想在构建过程中做任何复杂的事情,请确保:使用EUMM。但是,如果您在不同的目标平台上有构建问题,您可能会在Makefile中结束,这在make的每个变体上都是不同的


Module::Build为您提供了许多特性(如果扩展它,您可以想到的任何特性),并且都是perl的,因此您永远不会调试makefile。模块::安装为您提供了功能,但您必须将其捆绑起来,最终所有内容都通过“make”运行。

注意此建议已过时。但作为CPAN模块继续存在。利与弊依然存在,我对MakeMaker的看法依然存在


作为ExtUtils::MakeMaker的前维护者,我喜欢推荐Module::Build,因为MakeMaker是一个恐怖的节目。模块::构建是如此的好放在一起。但这些都不是你关心的问题,我会给出我“最不麻烦你”的答案

执行摘要: 因为Module::Build支持在整个Perl中不是100%到位的,所以从MakeMaker开始。如果您想进行任何定制,请切换到Module::Build。由于它们的基本布局、选项和界面几乎相同,这将是无痛的。尽管看起来很诱人,但要避免Module::Install

幸运的是,Module::Build可以模拟MakeMaker,这对一些人有所帮助,但如果您要进行任何定制,则没有帮助。看

对于使用Module::Build的CPAN发行版,这是可以接受的。CPAN上有足够的Module::Build内容,现在每个人都在处理如何引导它

最后,新选项允许CPAN外壳