in reply to XML::Simple throws decode error in encode.pm

Wide character in print at C:\Texts\Programs/SIFX.pm line 42.

Your XML parser is working correctly (returning decoded text), but you forgot to encode the text before outputting it. An easy way of fixing that is add an encoding layer to the file handle.

open(my $fh, '>:encoding(UTF-8)', ...) or die; print($fh $text);
use open ':std', ':encoding(UTF-8)'; print($text);
You can also do it manually.
use Encode qw( encode ); print($fh encode("UTF-8", $text));
use Encode qw( encode ); print(encode("UTF-8", $text));

It really bugs me because this snippet works fine:

Because Dumper encodes characters above 255 into escape sequences, hiding your bug (lack of encoding).

>perl -wle"print chr(0x2660)" Wide character in print at -e line 1. <junk><junk><junk> >perl -MData::Dumper -we"print Dumper chr(0x2660)" $VAR1 = "\x{2660}";