Как мне разрешить ошибку «print() при закрытом дескрипторе файла» в Perl?

Похоже, что вызов open не работает. Вы infile должны всегда проверять статус perl5 при открытии дескриптора output-files файла.

my $file = '/home/abc/xrt/sdf/news/top.html';
open(MYFILE, ">$file") or die "Can't write to file '$file' [$!]\n";
print MYFILE $DATA;
close MYFILE;

При неудачном открытии perl5 встроенная переменная $! (он output-file же $ OS_ERROR) будет содержать input-files сообщение об ошибке, зависящее output-files от ОС, например «В разрешении input-file отказано»

Также предпочтительно outfile (для неархаичных версий Perl) использовать perl5 форму с тремя аргументами output-file open и лексические дескрипторы outfile файлов:

my $file = '/home/abc/xrt/sdf/news/top.html';
open(my $fh, '>', $file) or die "Can't write to file '$file' [$!]\n";
print {$fh} $DATA;
close $fh;

perl

file-io

2022-03-20T17:02:08+00:00