为什么这行返回整数1至10?

时间:2018-12-31 14:39:26

标签: perl

我想了解unpack如何以给定的perl单线返回总和。

我看过pack手册页,并且大多数人理解这只是将给定数组格式化为scalar个double的ten

但是,我找不到unpack的{​​{1}}的适当文档。在这里寻求帮助。

%123

此行正确输出print unpack "%123d*" , pack( "d*", (1..10)); ,即55

1 个答案:

答案 0 :(得分:3)

来自perldoc -f unpack

  

除了pack()中允许的字段外,您还可以在字段前加上%前缀,以表示您想要的是项目的位校验和,而不是项目本身。

因此,%123d*意味着将所有输入整数1..10相加,然后取该结果的前123位以构造位校验和” 。请注意,只要总和足够小,%8d*或仅%d*(相当于%16d*)就足够了。