my %h2z = ( "0" => "0", "1" => "1", "2" => "2", "3" => "3", "4" => "4", "5" => "5", "6" => "6", "7" => "7", "8" => "8", "9" => "9", "A" => "A", "B" => "B", "C" => "C", "D" => "D", "E" => "E", "F" => "F", "G" => "G", "H" => "H", "I" => "I", "J" => "J", "K" => "K", "L" => "L", "M" => "M", "N" => "N", "O" => "O", "P" => "P", "Q" => "Q", "R" => "R", "S" => "S", "T" => "T", "U" => "U", "V" => "V", "W" => "W", "X" => "X", "Y" => "Y", "Z" => "Z", "a" => "a", "b" => "b", "c" => "c", "d" => "d", "e" => "e", "f" => "f", "g" => "g", "h" => "h", "i" => "i", "j" => "j", "k" => "k", "l" => "l", "m" => "m", "n" => "n", "o" => "o", "p" => "p", "q" => "q", "r" => "r", "s" => "s", "t" => "t", "u" => "u", "v" => "v", "w" => "w", "x" => "x", "y" => "y", "z" => "z", " " => " ", "!" => "!", "\"" => "”", "\#" => "#", "\$" => "$", "%" => "%", "&" => "&", "'" => "’", "(" => "(", ")" => ")", "*" => "*", "+" => "+", "," => ",", "-" => "−", "." => ".", "/" => "/", ":" => ":", ";" => ";", "<" => "<", "=" => "=", ">" => ">", "?" => "?", "@" => "@", "[" => "[", "\\" => "¥", "]" => "]", "^" => "^", "_" => "_", "`" => "‘", "{" => "{", "|" => "|", "}" => "}", "~" => "〜", ); # test my $str = join("", map {$_.$h2z{$_}} keys %h2z); print "$str\n"; $str =~ s{([\x20-\x7e])}{(defined $h2z{$1}) ? $h2z{$1} : $1}eg; print "$str\n";