My numbers look correct to me.
print unpack 'B*', 'twelve bytes'; ## hand spaced
001011 101110 111010 100110 001101 100110 111010 100110
000001 000100 011010 011110 001011 101010 011011 001110
You show code containing 'B*' but the bits that you show are from using 'b*'. That is why you can match the 'b*' case against it.
Trying to match the 'B*' against that string gives one of the less-sane results I mentioned (where the bit orders are mismatched).
To be extra clear, using 'B*' would result in each group of 8 bits being reversed (it doesn't reverse the whole bit string), which results in different 6-bit chunks not just reversed 6-bit chunks (so neither of your cases cover it).