Perl从二进制数中删除数字

Perl从二进制数中删除数字,perl,Perl,我想从24位二进制数字中删除几个数字,并将其转换为18位二进制数字 例如: 中频二进制数 bin24=111100111011111000100111 我想删除位23:22,15:14和7:6,输出应该是 bin18=110011111110100111 我知道我可以使用substr()和连接来实现这一点。我只是想知道我是否能在一行中做到这一点 my $bin18 = reverse join '', (reverse ($bin24 =~ /([01])/g))[0 .. 5, 8 ..

我想从
24位二进制
数字中删除几个数字,并将其转换为
18位二进制
数字

例如:

中频二进制数

bin24=111100111011111000100111
我想删除位
23:22
15:14
7:6
,输出应该是

bin18=110011111110100111
我知道我可以使用
substr()
和连接来实现这一点。我只是想知道我是否能在一行中做到这一点

my $bin18 = reverse join '', (reverse ($bin24 =~ /([01])/g))[0 .. 5, 8 .. 13, 16 ..21];
和其他关于这个主题的变化

$bin18 = join '', unpack('x2 a6 x2 a6 x2 a6', $bin24);

以及主题的其他变体。

啊,有更好的模式识别+1的人。一点叙述会更好啊,有更好的模式识别+1的人。一点叙述会更好
$bin18 = join '', unpack('x2 a6 x2 a6 x2 a6', $bin24);