【问题标题】:Why are some core Perl modules also available on CPAN?为什么一些核心 Perl 模块也可以在 CPAN 上使用?
【发布时间】:2018-03-15 04:04:47
【问题描述】:

例如,我认为 Encode 模块被认为是一个核心模块,并且随 Perl 的每个副本一起提供。它在 Perldoc 上有自己的页面:

https://perldoc.perl.org/Encode.html

...但它也可以在 CPAN 上使用:

http://search.cpan.org/~dankogai/Encode-2.92/Encode.pm

从浏览这两个文档来看,它们似乎包含相同的文本。那么为什么要把它放在这两个地方呢?仅仅是为了让 CPAN 可以用于查找“任何 Perl 模块”的文档吗?

【问题讨论】:

  • 与 Perl 的默认安装捆绑在一起并不会使模块不再是模块。核心模块也会随着时间而变化。
  • 它的一个好处是一些 CPAN 风格的信息就在那里,例如源。很难从 perl 发行版中挖掘出来。

标签: perl cpan


【解决方案1】:

这样的模块被称为“双重生命”模块。

  • 所以用户可以在不升级perl本身的情况下升级模块。

  • 因此,开发人员可以按照与perl 本身不同的时间表(例如更频繁地)发布模块的修复和更新。

  • 或者该模块在 CPAN 上启动,后来被添加到 perl 发行版中(例如,因为工具链中的模块需要它)。

  • 或者该模块可能正在从 Perl 发行版中删除。

【讨论】:

  • 也许添加一些模块是双重生命的,但有时会从核心中删除(例如:CGI), and maybe something about corelist` 关于如何检查模块是否是核心?
  • @stevieb,提到了前者。后者可能是一个相关主题,但与问题无关。如果有人还没有问过这个问题,你可以自己问(也可以自己回答)。
  • 当某些模块成为核心/从核心中移除时,是否有一种简单的方法可以查看时间表?
  • 明白了。好吧,无论如何看起来 corelist 是我的答案。
【解决方案2】:

同时在 CPAN 上提供一个核心库,可以轻松地从 Perl 附带的版本升级,以获得最新的改进和错误修复。

例如,Encode 版本附带某些 perl 版本:

Perl      Encode
v5.22.4   2.72_01
v5.24.2   2.80_01
v5.26.1   2.88

(使用 corelist -a Encode 检索)。其中任何一个都可以轻松更新到最新的 Encode 2.92。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-12
    • 2018-02-01
    • 1970-01-01
    • 2016-07-11
    • 2011-05-31
    • 2017-07-19
    • 2014-09-01
    • 1970-01-01
    相关资源
    最近更新 更多