有没有办法得到'unpack'调用“消耗”的字节数?我只想通过几个步骤从一个长字符串中解析(解包)不同的结构,如下所示:
my $record1 = unpack "TEMPLATE", substr($long_str, $pos);
# Advance position pointer
$pos += NUMBER_OF_BYTES_CONSUMED_BY_LAST_UNPACK();
# Other codes that might determin what to read in following steps
# ...
# Read again at the new position
my $record2 = unpack "TEMPLATE2", substr($long_str, $pos);
2条答案
按热度按时间tv6aics11#
这看起来确实像是
unpack
中的一个明显的遗漏,不是吗?作为安慰,您可以在解包模板的末尾使用a*
来返回输入字符串中未使用的部分。如果打包的字符串很长,这不是一个好主意,因为每次解包时都必须复制字符串的“剩余”部分。
xvw2m8pv2#
您可以将字符
.
添加到格式字符串的末尾:输出量:
这被巧妙地隐藏在perl5100delta文件中。如果它被记录在perlfunc的某个地方,我也找不到它。