Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Perl中指定包版本?_Perl_Version_Perl Module - Fatal编程技术网

如何在Perl中指定包版本?

如何在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.

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.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直接提供的。另请参见