在角色 Blob 中§

有关例程 unpack,请参阅主要文档 上下文

此方法被认为是实验性的,为了使用它,您需要执行

use experimental :pack;
 
multi method unpack(Blob:D: Str:D $template)
multi method unpack(Blob:D: @template)
multi        unpack(Blob:D \blobStr:D $template)
multi        unpack(Blob:D \blob@template)

根据模板字符串从 blob 中提取特征,并将其作为列表返回。

模板字符串由一个或多个以 ASCII 字母开头的单元组成,后面可以跟一个量词。量词可以是 *(通常表示“在此处用完 Blob 的其余部分”),或正整数(没有 +)。

模板单元之间的空格将被忽略。

有效模板的示例包括 "A4 C n*""A*"

识别以下字母

字母含义
A提取字符串,其中 Blob 的每个元素都映射到一个代码点
a与 A 相同
C从 blob 中提取一个元素作为整数
H提取十六进制字符串
L提取四个元素并将其作为单个无符号整数返回
n提取两个元素并以“网络”(大端)字节顺序将它们组合成单个整数
N提取四个元素并以“网络”(大端)字节顺序将它们组合成单个整数
S提取两个元素并将其作为单个无符号整数返回
v与 S 相同
V与 L 相同
x从 blob 中删除一个元素(即忽略它)
Z与 A 相同

示例

use experimental :pack;
say Blob.new(1..10).unpack("C*");
# OUTPUT: «(1 2 3 4 5 6 7 8 9 10)␤»