open my $fh, '+<:utf8', 'file.in.xml' or die $!;
my $line = <$fh>;
$line=~s/<\?xml.+encoding="\Kutf-16"/utf-8" /
or die "didn't match line: '$line'";
seek $fh,0,0 or die $!;
print $fh $line;
close $fh;
####
perl -v
This is perl 5, version 24, subversion 0 (v5.24.0) built for MSWin32-x64-multi-thread
####
#!/usr/bin/perl
use 5.024;
use strict;
use warnings;
use XML::Twig;
open (my $OFILE, '>:utf8', 'file.out.xml') or die "$!\n$^E";
my $t = XML::Twig->new(
twig_handlers => {
'/keys/key' => sub { $_[0]->flush($OFILE); },
},
output_encoding => 'utf-8',
pretty_print => 'indented',
comments => 'drop', # remove any comments
);
$t->safe_parse(\*DATA);
if ( $@ ) {
die "Error occured in XML data\n\n$@";
}
close $OFILE;
__DATA__
45646fa8-32e5-494c-93ff-0f00281fc2d6
b6bdc46f-3275-4312-bbbd-3e375208d05f
e5a37cf0-1f69-41a8-899c-23454600894a
b6287f3d-f70c-498d-8360-5a2d8e863ab3
118be380-5e69-47d4-81c6-756c34334936
46f9dd5b-d0e9-4f8f-a559-f698bea561fa
9627058f-29f0-4263-8978-fc77ac2fe0a3
6038d393-ba81-423e-8429-01406779ff9e
5a67c3f0-ea6f-427c-bc3a-86fdb31fd117
7ac8b1d8-ff60-4b55-8fe0-ea809d9f5b02