use charnames ':full'; { my %escapes = ( '&' => '&', '<' => '<', '>' => '>', '"' => '"', "'" => ''', ); sub xml_text { (my $s = $_[0]) =~ s/([<&])/$escapes{$1}/g; $s } sub xml_att_val { (my $s = $_[0]) =~ s/([<&"])/$escapes{$1}/g; qq{"$s"} } } my $s_7bit = "A"; my $s_8bit = "\N{LATIN CAPITAL LETTER A WITH CIRCUMFLEX}"; my $s_32bit = "\N{BLACK SPADE SUIT}";