设置$ VERSION的好处是什么?

时间:2010-09-02 23:56:36

标签: perl

很多方法可以在perl中设置模块$VERSION,有些甚至有优势。我不知道为什么我们这样做?我的意思是META.yml有一个版本...... cpan使用的是什么?那么我们为什么要在模块中设置呢?有什么意义?

5 个答案:

答案 0 :(得分:10)

所以你可以说

use Module::Name 4.5.6;

如果您没有至少安装了版本4.5.6的Module :: Name,则代码将失败。

当您需要知道安装的版本时,它也很有帮助,您可以说:

perl -MScalar::Util=99999999999999

这大致相当于

#!/usr/bin/perl

use Scalar::Util 99999999999999;

它会失败(因为Scalar::Util无法接近版本99999999999999)并告诉您版本号。就我而言,它说:

Scalar::Util version v.Inf required--this is only version 1.22 at
/Users/cowens/apps/perlbrew/perls/perl-5.12.1/lib/5.12.1/Exporter/Heavy.pm
line 120.
BEGIN failed--compilation aborted.

答案 1 :(得分:5)

来自perlmodlib: Guidelines for Module Creation

  

完全兼容   Exporter和MakeMaker模块你   应存储模块的版本   非my包变量中的数字   叫$ VERSION。

为了补充其他人给出的答案,这里是use MODULE VERSION

的链接

答案 2 :(得分:3)

因此,如果您的模块被广泛使用并积极维护,人们可以在其代码中轻松引用该版本,以根据其使用的版本激活/停用其代码。只是一个猜测。

答案 3 :(得分:3)

代码中提供了

$VERSION。例如,模块的用户可以编写

use YourModule 2.3;

确保可以使用最低版本的YourModule。这对于API更改,错误修复等很重要。

答案 4 :(得分:3)

这可能有点偏离主题,但是从perl 5.12开始,你可以简单地通过

设置模块VERSION
package Foo::Bar 1.23;

请参阅perl 5.12 changes

版本号必须遵循“严格”格式,请参阅版本:: Internals中的$version::STRICT