3

哪一个是最高的 Perl 版本,我将不再提及作为文档中的要求?例如我从未见过:需要 Perl 4 或更高版本。

4

4 回答 4

7

归根结底,向用户提供额外信息并没有什么坏处,所以如果您知道即使是非常旧的版本也不兼容,您不妨提一下。

然而,Perl 4 被认为是一门独立的语言。无需提及;没有人会期望 C++ 程序在 C 中运行。

从本论坛人们的提问来看,5.8还在广泛使用中。因此,如果您有兴趣制作一个经过充分测试并尽可能广泛使用的模块,我认为至少在您的测试中回溯到那么远是一个好主意。

如果您需要运行某个版本,require VERSION在您的模块中使用可能有助于强制执行此要求。这样,如果用户尝试在太旧的版本上运行您的模块,他们就会收到明确的错误消息。

于 2012-10-22T12:43:51.643 回答
4

记录您实际测试过的最古老的 Perl,无论它是什么。不要猜测它;不兼容性蔓延。正如其他人所提到的,在您的代码use v5.x和模块元数据中声明您的最低版本。

你应该往回走多远?无论您愿意支持和测试的最旧版本是什么。这是你的时间和潜在的挫折。你越往后走,你错过的功能就越多,工作的 CPAN 模块就越少,你必须解决的错误就越多。

如果您使用线程或 Unicode,请尽可能使用最新的。Unicode 支持一直在改进。线程在 5.8 开始时非常错误,在 5.10 中开始稳定,并且从那以后变得更好。

5.10.1 是一个非常安全的最低版本,您可以获得诸如autodie、parent、compression 和 archive modules、defined-或者说 given/when、smart match 和 named captures 之类的东西。5.10.1 特别是因为它修复了智能匹配如何以与 5.10.0 不兼容的方式工作。这是 Debian stable 附带的,这是一个很好的兼容性较低的标准。这是您最早可以期待大多数 CPAN 模块提供可靠支持的时间。

在此之前的下一步是 5.8.9,这是 5.8 系列中的最后一个。这是您可能在健全的生产环境中看到的最古老的 Perl。你失去了很多功能,线程不太可能很好地工作,Unicode 仍然有点不稳定,CPAN 模块开始崩溃。

在此之前是 5.8.4,它是已知的最古老的 Perl,它与主流操作系统 Solaris 一起发布。这是一个方便的操作系统版本列表以及它们附带的 Perl

在此之前是 5.6.1。5.6.2 虽然包含许多错误修复,但从未被广泛采用。在这一点上,你已经深入了几层硬壳、尘土飞扬的安装,这些安装永远不会升级。存在线程和 Unicode 支持,但以非常不同和非常破碎的形式存在。许多 CPAN 模块不支持 5.6。

5.005_03 和 5.004_04 是下一个摇摇欲坠的窗台。在这一点上成为受虐狂或学术练习。您可能会发现一些非常古老的安装,或者一些“在添加线程和 Unicode 之前 Perl 更好”的顽固派。

5.004 之前的任何内容和非常常见的语法片段,如foreach my $foo不可用。

于 2012-10-23T02:59:43.200 回答
3

www.perl.org:

当前版本:Perl 5.16.1

所以也许任何高于 5.10 的东西都值得一提。

我使用 Modern::Perl

概要

现代 Perl 程序使用几个模块来启用 Perl 和 CPAN 的附加功能。不要复制和粘贴所有这些使用行,而是只写一个:

use Modern::Perl

为了向前兼容,我建议您将年份指定为单个可选导入标记。例如:使用 Modern::Perl '2009';使用 Modern::Perl '2010';

...都启用 5.10 功能,...

另见: perldoc Modern::Perl 或https://metacpan.org/module/Modern::Perl

于 2012-10-22T12:29:26.817 回答
2

如果您知道需要最低版本,为什么不记录呢?依赖项通常记录在 README 文件中,并在 Makefile.PL 或 Build.PL 中指定给安装程序。

5.14 和 5.16 是仅有的两个受支持的 Perl 版本,但许多仍然使用 5.8 和 5.10。我什至偶尔听到 5.5 和 5.6。

于 2012-10-22T16:33:58.463 回答