我需要“关闭FILEHANDLE”检查错误吗?

时间:2010-01-15 07:57:29

标签: perl

做“或死$!” - 参与“关闭$ fh或死$!;” - 行什么好?

#!/usr/bin/env perl
use warnings;
use strict;

my $file = 'my_file';
open my $fh, '<', $file or die $!;

print <$fh>;

close $fh or die $!;

3 个答案:

答案 0 :(得分:16)

在您的示例中,因为它位于脚本的末尾,而且在打开以供阅读的文件中,它是不必要的。

我正在考虑在阅读烟斗时是否有必要。通常你会在EOF条件后关闭,所以我认为也没有必要。

但是,如果您正在编写,则可以在关闭时检测到各种错误。最简单的例子是一个完整的磁盘。在关闭文件句柄之前,可能由于缓冲而无法报告。

你也可以use autodie(我推荐以上致命推荐)。

答案 1 :(得分:8)

如果文件已打开以供阅读,则不需要。

但是,当文件打开以进行写入时,可能无法在close刷新IO缓冲区,因此在这种情况下它可能很有用

答案 2 :(得分:0)

是的,“或死”应该这样做。

然而实际上在关闭文件时检查错误是不必要的,因为关闭可能合理地给你的唯一错误是“错误的文件描述符”,即文件首先没有打开 - 这意味着它实际上是成功的反正。

你也可以考虑使用Fatal。 (perldoc Fatal)