Нужно ли "закрыть FILEHANDLE" проверить наличие ошибок?
имеет ли "или умереть $!" - часть в "close $fh или die $!;" - линия какая-нибудь польза?
#!/usr/bin/env perl
use warnings;
use strict;
my $file = 'my_file';
open my $fh, '<', $file or die $!;
print <$fh>;
close $fh or die $!;
Ответ 1
В вашем примере, поскольку он находится в конце вашего script и в открывшемся для чтения файле, он невозможен.
Я пытаюсь думать, если это необходимо при чтении трубы. Обычно вы закрываете состояние EOF, поэтому я думаю, что это тоже не нужно.
Однако, если вы пишете, существуют различные ошибки, которые могут быть обнаружены с течением времени. Самый простой пример - полный диск. Это может не сообщаться до закрытия дескриптора файла из-за буферизации.
Вы также можете use autodie (рекомендуется, по моему мнению, Fatal).
Ответ 2
Если файл открыт для чтения, это не требуется.
Однако, когда файл открыт для записи, возможно, что буфер IO не может быть сброшен на close, поэтому он может быть полезен в этом случае
Ответ 3
Да, "или умереть" должно это сделать.
Однако на практике проверка ошибок при закрытии файла не требуется, так как единственная ошибка, которая может вам когда-нибудь обосновать, была "плохим дескриптором файла", то есть файл не был открыт в первую очередь, что означает, что он эффективно преуспел в любом случае.
Вы также можете использовать Fatal. (perldoc Fatal)