这个问题与这个问题有关:Hash keys encoding: Why I get here with Devel::Peek::Dump two different results?
当我取消注释该# utf8::upgrade( $name );行或注释掉该$hash{'müller'} = 'magenta';行时,它会起作用。
#!/usr/bin/env perl
use warnings;
use 5.014;
use utf8;
binmode STDOUT, ':encoding(utf-8)';
use XML::LibXML;
# Hash read in from a file:
# ...
my %hash = ( 'müller' => 'green', 'schneider' => 'blue', 'bäcker' => 'red' );
# ...
# change or add something
$hash{'müller'} = 'magenta';
# writing Hash to xml file
my $doc = XML::LibXML::Document->new('1.0', 'UTF-8' …Run Code Online (Sandbox Code Playgroud)