如何在Perl中指定包版本?
5.10.0之前的文档和最近的模块之间的建议相互矛盾,这让我有点困惑。很明显,版本字符串('v1.0.3')是错误的,应该指定如下版本:如何在Perl中指定包版本?,perl,version,perl-module,Perl,Version,Perl Module,5.10.0之前的文档和最近的模块之间的建议相互矛盾,这让我有点困惑。很明显,版本字符串('v1.0.3')是错误的,应该指定如下版本: use version; our $VERSION = qv('1.0.3'); 但是版本模块说我们回到了使用版本字符串: use version 0.77; our $VERSION = qv("v1.2.3"); 我们是否倒退了,或者这背后有什么原因?您对Perl最佳实践的引用不太正确。具体来说,形式的裸字符串 our $VERSION = v1.0.
use version; our $VERSION = qv('1.0.3');
但是版本模块说我们回到了使用版本字符串:
use version 0.77; our $VERSION = qv("v1.2.3");
我们是否倒退了,或者这背后有什么原因?您对Perl最佳实践的引用不太正确。具体来说,形式的裸字符串
our $VERSION = v1.0.3;
他们感到气馁。在version.pm的最新版本中,建议使用true字符串:
use version 0.77; our $VERSION = qv("v1.2.3"); # shorthand
添加此功能是为了提高可读性,同时特别避免所述的裸字符串陷阱
正如您链接到的文档页面所说,您可以使用Perl 5.10中的内置逻辑来使用没有预挂起的“v”的版本:
如果您有一个使用十进制$版本(浮点)的模块,并且您不打算更改它,那么此模块不适合您。在简单的$version分配中,version.pm并不能为您带来任何好处
因此,您的问题的答案是:如果您正在编写使用version.pm的新代码,请使用新的“v1.0.3”语法。如果您的旧代码就是这样编写的,或者您不想明确依赖module.pm,那么请坚持使用一个简单的数字。最新的福音是,您上面给出的v1.0.3格式的vString是可以的,但真正的1.0.3格式的裸vString(两个小数,没有v)是邪恶的,邪恶的,邪恶的。这是perl5-porters直接提供的。另请参见