Как я могу проверить, открыт ли дескриптор файла в Perl?

Модуль Scalar::Util предоставляет для output-files этого функцию openhandle(). В отличие perl5 от fileno(), он обрабатывает дескрипторы output-files файлов Perl, которые не связаны fileinput с дескрипторами файлов ОС. В fileinput отличие от tell(), он не выдает input-file предупреждений при использовании infile с неоткрытым дескриптором filehandle файла. Из модуля documentation:

openhandle output-file FH

Returns FH if FH may be used as a filehandle and is open, or FH is a tied handle. Otherwise "undef" is returned.

   $fh = openhandle(*STDIN);           # \*STDIN
   $fh = openhandle(\*STDIN);          # \*STDIN
   $fh = openhandle(*NOTOPEN);         # undef
   $fh = openhandle("scalar");         # undef

perl

file-io

filehandle

2022-10-10T21:10:28+00:00