有没有办法强制解压缩将单个字节视为“空填充”短路,同时解压缩具有不均匀字节数的标量?
示例代码:
my $input = 'abcde';
foreach (unpack 'S*', $input) {
print "$_ ";
}
# Result:
# 25185 25699
# Expected result:
# 25185 25699 101
我知道有可能检查标量的长度并附加它以防它不均匀,如下所示,但是有一种更清洁的方式我可以在需要时自动解压缩它吗?
# What I'm trying to avoid before running unpack:
if (length($input) % 2)) {
$input .= "\0";
}
答案 0 :(得分:7)
每次都可以添加空字节,当字节数是偶数时,它将被忽略。
#!/usr/bin/perl
use warnings;
use strict;
use Test::More tests => 2;
sub Unpack {
my $input = shift;
[ unpack 'S*', "$input\0" ]
}
is_deeply Unpack("abcde\0"), [25185, 25699, 101];
is_deeply Unpack("abcde"), [25185, 25699, 101];