sub showbits { my ($template, $utf, $result, $i); $utf = is_utf8 $_[0]; $template = $utf ? "U*" : "C*"; foreach ( unpack($template, $_[0] ) ) { $result .= "\n" ; $result .= substr( $_[0], $i, 1 ) . "="; $result .= sprintf ("%04X", $_) . "="; if ( $utf and $_ > 127) { $b = unpack("B*", substr( $_[0], $i, 1 )); } else { $b = unpack("B*", pack("N", $_ )); } $b =~ s/^0{32}//; # leading zeros $b =~ s/^0{16}//; $b =~ s/^0{8}//; $result .= $b; $i++; } return $result; }