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

Perl 我应该把核心模块放在Makefile.PL的PREREQ_PM部分吗?,perl,makefile,perl-module,prerequisites,Perl,Makefile,Perl Module,Prerequisites,我应该只把非核心模块放在Makefile.PL的PREREQ_PM部分,还是应该把核心模块也放在那里?不久前有一个 我个人的政策是不这样做 虽然偶尔会从核心中删除模块,但弃用周期很长(大约2年),这给了您足够的时间用更新的依赖项重新打包发行版 如果最坏的情况发生了,并且您没有更新您的发行版,当他们尝试安装它时,他们会收到一条关于丢失模块的错误消息,因此他们应该清楚地知道如何继续。(也就是说,他们应该安装该模块,然后再次尝试安装您的模块。)是的,您应该指定所有依赖项:Perl核心并非永远固定不变。

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

不久前有一个

我个人的政策是不这样做

虽然偶尔会从核心中删除模块,但弃用周期很长(大约2年),这给了您足够的时间用更新的依赖项重新打包发行版


如果最坏的情况发生了,并且您没有更新您的发行版,当他们尝试安装它时,他们会收到一条关于丢失模块的错误消息,因此他们应该清楚地知道如何继续。(也就是说,他们应该安装该模块,然后再次尝试安装您的模块。)

是的,您应该指定所有依赖项:Perl核心并非永远固定不变。核心模块总是被添加或删除(在弃用过程之后)。正在指定所有依赖项

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

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

  • …将使您的程序在旧的Perl上工作,这些Perl没有将模块包含在Core中,但仍然能够使用它

另一方面,这些收益可能很小。如果您忘记指定像
Carp
这样的中心模块作为依赖项,则不会有任何中断

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

  • Perl的核心内容,如
    strict
    ,不会被删除
  • 下载和安装CPAN模块所需的资料。这包括文件系统处理。这里偶尔会发生变化
  • 历史积垢。请扔掉CGI.pm;-)
提示:使用查看在哪个perl版本中有哪些模块版本可用