my $x = 0b11100010; # 226 $x = -( ( ~$x + 1 ) & 0xFF ) if $x & 0x80; -or- $x -= 0x100 if $x >= 0x80; -or- $x = unpack('c', pack('C', $x)); say $x; # -30