Вероятно, ваша проблема в том, что вы передали дескриптор файла, а не ссылку на дескриптор файла.
$t->flush(\*OUT) # look at the '\'
Некоторые предложения для вашего кода: в современном perl лучше использовать три аргумента open и косвенные дескрипторы файла:
open (my $fh_out, '>', $out_file) or die "unable to open '$out_file' for writing: $!";
$twig->print($fh_out); # this prints to the filehandle
Другой способ печати состоит в том, чтобы заштриховать дерево с помощью $twig->sprint
и распечатать его как файл *, как обычно
print {$fh_out} $twig->sprint();