DB<138> undef $m0; vec($m0,$_,1)=1 for 0,2,8,9,10 DB<139> p unpack('b16', $m0) # ok LSB left 1010000011100000 DB<140> p unpack('B16', $m0) # MSB, but inside LS bytes chunks 0000010100000111 DB<142> $x+= 2**$_ for 0,2,8,9,10 DB<144> printf "%016b",$x # what I expected 0000011100000101 DB<145>