【问题标题】:Check module compatibility with different Perl versions检查模块与不同 Perl 版本的兼容性
【发布时间】:2012-08-14 08:11:31
【问题描述】:

是否有命令行开关或任何其他简单的方法可以检查我的模块与不同版本的 perl 的兼容性?我知道如果我将use 5.6.1; 放在脚本的顶部,该脚本将禁用 5.6.1 之后的所有功能。但是如果我有一个模块使用了其他几个模块等等,我需要一种更快的方法来检查我的 Makefile.PL 或 Build.PL 中需要的 Perl 的最低版本。

【问题讨论】:

  • 上传到PAUSECPAN Testers Matrix 几乎可以在每个操作系统的每个 Perl 版本上运行所有内容。
  • “我知道如果我将 use 5.6.1; 放在脚本的顶部,该脚本将禁用 5.6.1 之后的所有功能”。如果您省略use 5.6.1,脚本将停止稍后禁用功能。
  • @Flimm 是的,这可能是一个错字,但我不记得我在说什么。应该“启用”吗?

标签: perl perl-module


【解决方案1】:

use v5.6.1 和类似的主要会在使用的 Perl 版本比指定的版本旧时引发编译时错误。另外,启用了对应的feature bundle,如果版本是v5.11或更高版本,strict pragma也会启用。

use v5.6.1 不会使 Perl v5.8 的行为类似于 v5.6.1,并且没有办法实现这一点。即使在以后的版本中,也只有可以使用feature pragma 控制的功能会被调整到给定的版本。

要测试你的模块,你必须安装每个不同版本的 Perl 并单独测试它

【讨论】:

  • 功能编译指示的文档指出,usev5.10 或更高版本会自动包含相应的功能包。
【解决方案2】:

针对 Perl::MinimumVersion 运行您的模块。

【讨论】:

  • 比通过多个 perls 运行要好得多(尽管这有其自身的优点)
【解决方案3】:

您可以安装不同版本的 perl 并针对它们进行测试。我将它们手动安装在不同的位置,但如果您想自动化,请使用 perlbrew。

可能有脚本或策略试图找到所需的最低 perl 版本,但几年前我尝试获取和汇总最低 perl 版本的所有方法都显得笨重且不可靠。当然这并不意味着它不存在或无法完成,只是我找不到它。

【讨论】:

  • 我通常不使用 Windows,但当我这样做时,我使用 Strawberry Perl。
  • 在虚拟机中安装 Linux 测试平台很有用。 VirtualBox 将免费为您提供虚拟机。
  • 我第二次使用 perlbrew。它非常适合在一台机器上运行多个版本的 Perl。见perlbrew.pl
猜你喜欢
  • 2014-10-16
  • 2018-05-14
  • 2020-10-16
  • 2013-10-07
  • 2011-07-21
  • 2013-12-22
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多