为啥版本不能打印?

Posted

技术标签:

【中文标题】为啥版本不能打印?【英文标题】:Why version is not printable?为什么版本不能打印? 【发布时间】:2017-11-24 00:44:19 【问题描述】:

我有这个班轮:

perl -Mversion -e 'our $VERSION = v1.02; print $VERSION'

输出是(不可见,有两个字符:1、2):

为什么模块版本不可打印?我期待看到v1.02

【问题讨论】:

我得到了输出。这是两个不可打印的字符。我想我是 00 和 11 v1.02 周围加双引号就可以了 @Dada 这不是达到了version pragma 的目的吗? v1.02 是值为1 的字符,后跟值为2 的字符(它们不可打印;但例如,如果您执行say v65.66,它将打印AB )。现在我不知道 version 模块,但从我在 CPAN 上看到的情况来看,使用它的标准方法不是像 our $VERSION = version->declare("v1.02") 吗? @simbabque @Dada 我也想说declare 部分。是的。 【参考方案1】:

我找到了这个DOC

print v9786;              # prints SMILEY, "\x263a"
print v102.111.111;       # prints "foo"
print 102.111.111;        # same

回答我的问题: 尽管v1.02v-string,但内部不是字符串。当我们想要打印它时,我们应该做额外的步骤。例如,按照上面的建议使用模块version

UPD 我找到了下一个解决方案 (DOC):

printf "%vd", $VERSION;  # prints "1.2"

UPD

this 应该被阅读:

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

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

【讨论】:

以上是关于为啥版本不能打印?的主要内容,如果未能解决你的问题,请参考以下文章

为啥代码不能打印这个二维数组的元素?

为啥我不能在我的结构中打印名称?

为啥打印机可以打印却不能复印?

如果行和列的差大于 1,为啥我不能打印二维数组?

bartender(条码打印软件) 9.4,我还装seagull license server了装后还是为啥不能打印?

为啥我不能在 Swift 中使用从一个 UIViewController 传递到另一个(在控制台中打印数据)的数据设置标签?