Подтвердить что ты не робот

Нужно ли "закрыть 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 $!;
4b9b3361

Ответ 1

В вашем примере, поскольку он находится в конце вашего script и в открывшемся для чтения файле, он невозможен.

Я пытаюсь думать, если это необходимо при чтении трубы. Обычно вы закрываете состояние EOF, поэтому я думаю, что это тоже не нужно.

Однако, если вы пишете, существуют различные ошибки, которые могут быть обнаружены с течением времени. Самый простой пример - полный диск. Это может не сообщаться до закрытия дескриптора файла из-за буферизации.

Вы также можете use autodie (рекомендуется, по моему мнению, Fatal).

Ответ 2

Если файл открыт для чтения, это не требуется.

Однако, когда файл открыт для записи, возможно, что буфер IO не может быть сброшен на close, поэтому он может быть полезен в этом случае

Ответ 3

Да, "или умереть" должно это сделать.

Однако на практике проверка ошибок при закрытии файла не требуется, так как единственная ошибка, которая может вам когда-нибудь обосновать, была "плохим дескриптором файла", то есть файл не был открыт в первую очередь, что означает, что он эффективно преуспел в любом случае.

Вы также можете использовать Fatal. (perldoc Fatal)