「この、いくらか予測の難しい振る舞いは、Perl 5.22 で導入された "bitwise" 機能で避けることができます。 これは use feature 'bitwise' か use v5.28 で有効にできます。 Perl 5.28 より前では、これは "experimental::bitwise" カテゴリの警告を 出力していました。 この機能の基では、四つのビット単位演算子 (~ | & ^) は常に数値です。 それぞれの演算子の後にピリオドを付ける (~. |. &. ^.) ことで、 そのオペランドを文字列として扱うことを強制します:」
perlop - Perl の式: 演算子、優先順位、文字列リテラル - perldoc.jp http://perldoc.jp/docs/perl/5.40.0/perlop.pod#Bitwise32String32Operators
use v5.28;なの(´・ω・`)