my $x = '0x1234' ; my $y = 0x1234 ; printf "\$x=%s, ~\$x=%s\n", show($x), show(~$x) ; printf "\$y=0x%X, ~\$y=0x%X\n", $y, ~$y ; printf "hex(\$x)=0x%X, ~\hex($x)=0x%X\n", hex($x), ~hex($x) ; printf "\$y=%s,\n ~\$y=%s\n", show($y), show(~$y) ; sub show { return '"'. join('', map { sprintf('\\x%02X', ord($_)) } split(//, $_[0])) .'"' ; } ;