我应该将核心模块放在Makefile.PL的PREREQ_PM部分吗?

时间:2014-01-03 14:03:17

标签: perl makefile perl-module prerequisites

我应该只将非核心模块放在Makefile.PL的PREREQ_PM部分中,还是应该将核心模块放在那里?

2 个答案:

答案 0 :(得分:14)

是的,您应该指定所有依赖项:Perl Core永远不会被修复。核心模块一直在添加或删除(在弃用过程之后)。指定所有您的依赖项...

  • ...将使您的程序在将来从已从Core中删除模块的perls中运行。它仍然可以从CPAN获得。例如,Term::UI是自v5.9.5以来的核心模块,但在v5.19.0中被删除。

  • ...将断言安装了足够高的核心模块版本。有些模块随着时间的推移而发生了很大变化,很容易忘记五年前并非所有模块都可用。

  • ...将使您的程序适用于未将模块包含在Core中的较旧的perls,但仍可以使用它。

另一方面,这些收益可能非常小。如果您忘记指定像Carp这样的中心模块作为依赖项,那么什么都不会破坏。

请记住:Core中包含模块有三个原因:

  • strict这样的Perl中心,不会被删除。
  • 下载和安装CPAN模块所需的东西。这包括文件系统处理。这里偶尔会发生变化。
  • 历史遗迹。 Pleeease抛出CGI.pm; - )

提示:使用corelist tool from Module::Corelist查看perl版本中可用的模块版本。

答案 1 :(得分:2)

不久前还有interesting discussion on this on PerlMonks

我的个人政策不是这样做的。

虽然偶尔会从核心删除模块,但是有一个很长的(大约2年)弃用周期,让您有足够的时间用最新的依赖关系重新打包您的发行版。

如果最糟糕的情况发生,并且您没有更新您的发行版,当他们尝试安装它时,他们会收到有关丢失模块的错误消息,因此对于他们来说应该是相当明显的继续。 (也就是说,他们应该安装该模块,然后再尝试安装你的模块。)