Есть две вещи, которые вам нужно сделать.Если вы хотите записать UTF-8 в файл, вам нужно сказать так:
my $output = IO::File->new($foundFilePath, ">:utf8");
И если вы хотите использовать буквальные строки UTF-8 в своем исходном коде, вам нужно сказать
use utf8;
в начале вашей программы.В противном случае Perl предполагает, что ваш исходный код - Latin-1.
Вот полный пример сценария:
use utf8;
use strict;
use warnings;
use IO::File;
use XML::Writer;
my $foundFilePath = 'test.xml';
my $output = IO::File->new($foundFilePath, ">:utf8");
my $writer = XML::Writer->new(OUTPUT => $output);
$writer->xmlDecl("UTF-8");
$writer->startTag("xml");
$writer->startTag("test");
$writer->characters("’");
$writer->endTag("test");
$writer->endTag("xml");
$writer->end();
$output->close();