为什么版本号无法打印?

3
我有这个一行代码: perl -Mversion -e 'our $VERSION = v1.02; print $VERSION' 输出结果是(看不见,只有两个数字:1,2): enter image description here 为什么模块版本号不能被打印出来?我期望看到的是 v1.02

我得到了输出。是两个不可打印的字符。我认为它们是00和11。 - simbabque
v1.02 两侧加上双引号即可。 - Dada
@Dada,这不是违背了version预处理指令的目的吗? - simbabque
2
v1.02 是具有值 1 的字符,后跟具有值 2 的字符(它们不可打印;但例如,如果您执行 say v65.66,它将打印 AB)。现在我不知道 version 模块的情况,但从我在 CPAN 上看到的内容来看,使用它的标准方式不是像这样使用吗:our $VERSION = version->declare("v1.02")?@simbabque - Dada
@Dada 我本来也想说 declare 部分的。没错。 - simbabque
v1.02(和 v1.2)产生相同的两个字符字符串,即 "\x01\x02" - ikegami
1个回答

6
我找到了这个文档
print v9786;              # prints SMILEY, "\x{263a}"
print v102.111.111;       # prints "foo"
print 102.111.111;        # same

回答我的问题:
尽管 v1.02 是一个不是内部字符串的v-string。当我们想要打印它时,我们需要额外的步骤。例如,像上面建议的那样使用模块version更新
我找到了下一个解决方案(文档):
printf "%vd", $VERSION;  # prints "1.2"

更新

而且这个应该被理解为:

有两种输入v-strings的方法:一个是带有两个或多个小数点的裸数字,另一个是带有一个或多个小数点和一个前导'v'字符(同样是裸的)的裸数字。例如:

$vs1 = 1.2.3; # encoded as \1\2\3
$vs2 = v1.2;  # encoded as \1\2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接