如何在Perl中指定包版本?

时间:2009-08-01 07:54:07

标签: perl version perl-module

我对5.10.0之前的文档和最近的version模块之间的冲突建议感到有些困惑。 Perl Best Practices非常清楚地表明版本字符串('v1.0.3')是坏的,而且应该指定版本如下:

use version; our $VERSION = qv('1.0.3');

但版本模块说我们回到使用版本字符串:

use version 0.77; our $VERSION = qv("v1.2.3");

我们退步了,还是有原因呢?

1 个答案:

答案 0 :(得分:8)

您对 Perl最佳实践的引用并不完全正确。具体来说, vstrings形式

our $VERSION = v1.0.3;
不鼓励。在最新版本的version.pm中,建议使用真正的字符串:

use version 0.77; our $VERSION = qv("v1.2.3");               # shorthand

此功能已添加以提高可读性,同时特别避免描述here所示的裸字符串陷阱。

正如您链接的文档页面所说,您可以在Perl 5.10中使用没有预先挂起的'v'的版本使用内置逻辑:

  

如果你有一个使用十进制$ VERSION(浮点)的模块,并且你不打算改变它,那么这个模块不适合你。没有任何版本.pm可以通过简单的$ VERSION赋值获得你。

因此,您的问题的答案是:如果您正在编写使用version.pm的新代码,请使用新的“v1.0.3”语法。如果这是您的旧代码的编写方式,或者您不想明确依赖于module.pm,请坚持使用普通数字。