我对 5.10.0 之前的文档和更新版本模块之间的冲突建议感到有些困惑。 Perl 最佳实践清楚地表明版本字符串 ('v1.0.3') 是错误的,应该按如下方式指定版本:
use version; our $VERSION = qv('1.0.3');
但是版本模块说我们又回到了使用版本字符串:
use version 0.77; our $VERSION = qv("v1.2.3");
我们是否退步了,或者这背后有什么原因?
您对Perl Best Practices的引用不太正确。具体来说,形式的裸vstrings
our $VERSION = v1.0.3;
气馁。在最新版本的 version.pm 中,建议使用真正的字符串:
use version 0.77; our $VERSION = qv("v1.2.3"); # shorthand
添加此功能以提高可读性,同时特别避免此处描述的裸字符串陷阱。
正如您链接到的文档页面所说,您可以使用 Perl 5.10 中的内置逻辑使用没有前置“v”的版本:
如果您有一个使用十进制 $VERSION(浮点)的模块,并且您不打算更改它,那么此模块不适合您。version.pm 没有什么比简单的 $VERSION 分配为您带来任何好处。
因此,您的问题的答案是:如果您正在编写使用 version.pm 的新代码,请使用新的“v1.0.3”语法。如果您的旧代码是这样编写的,或者您不想明确依赖于 module.pm,请坚持使用纯数字。