【问题标题】:How do you specify a package version in Perl?如何在 Perl 中指定软件包版本?
【发布时间】:2010-11-16 00:16:24
【问题描述】:

我对 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");

我们是否退步了,或者这背后有什么原因?

【问题讨论】:

标签: perl version perl-module


【解决方案1】:

Perl Best Practices 中的引用不太正确。具体来说,bare 形式的 vstrings

our $VERSION = v1.0.3;

不鼓励。在最新版本的 version.pm 中,建议使用 true 字符串:

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

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

正如您链接到的文档页面所说,您可以使用 Perl 5.10 中的内置逻辑使用不带前置“v”的版本:

如果您有一个使用十进制 $VERSION(浮点)的模块,并且您不打算更改它,那么此模块不适合您。与简单的 $VERSION 分配相比,version.pm 没有任何好处。

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

【讨论】:

  • 最新的福音是,您在上面给出的 v1.0.3 形式的 vstring 是可以的,但 1.0.3 形式的 vstring(两位小数,没有 v)是邪恶的,邪恶的,邪恶的。这是直接来自 perl5-porters。
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
相关资源
最近更新 更多