9

我有很多 perl 代码在测试和生产中做不同的事情,我想将我的代码锁定到 CPAN 模块的特定版本,以防将来对其中一些模块进行一些更改,这可能会破坏我的代码。

所以我想使用我使用的所有模块的特定版本。我的意思是使用

use XML::Smart 
4

2 回答 2

9

要使用特定模块,请仅参考

use only MyModule => 0.30;

如果您想要的模块版本高于当前安装的模块版本,也会打印错误您可以说

use XML::Smart v1.6.9;

或者

use XML::Smart 1.6.9;


为了向后兼容

use XML::Smart 1.006_009;  

参考perldoc

  • 使用模块版本列表
  • 使用模块版本
  • 使用模块列表
  • 使用模块
  • 使用版本

如果在 Module 和 LIST 之间存在 VERSION 参数,则用户将使用给定版本作为参数调用 Module 类中的 VERSION 方法。如果给定版本大于变量 $Module::VERSION 的值,则从 UNIVERSAL 类继承的默认 VERSION 方法会发出嘶嘶声。

于 2013-01-15T07:33:08.697 回答
4

你可以做低技术的事情:

BEGIN {
    use XML::Simple;
    die "..." unless XML::Simple->VERSION eq '1.23';
    }

知道特定模块如何报告其版本令人头疼。该version模块应该进行版本数学运算,但我发现它并不可靠,因为指定版本的方法太多。

于 2013-01-15T18:51:09.390 回答