Benutze XML::Feed. Es ist eine schlechte Idee, XML manuell zusammenzuschustern, wenn bereits ein spezialisiertes Modul existiert.
XML::DOM ist überholt, aber das sagte ich dir bereits.
printToFile ist nicht PerlIO-konform, d.h. du musst deine Ausgaben selber kodieren. Ungetestet: verwende stattdessen die Methode printToFileHandle, der du ein vorher geöffnetes Handle geben kannst, welches die vernünftigen IO-Layer aufweist.
use autodie qw(:all);
open my $h, '>:encoding(UTF-8)', $file;