【发布时间】:2010-01-15 07:57:29
【问题描述】:
“close $fh or die $!;”行中的“or 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 $!;
【问题讨论】:
标签: perl
“close $fh or die $!;”行中的“or 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 $!;
【问题讨论】:
标签: perl
在您的示例中,因为它位于脚本的末尾和打开以供阅读的文件上,所以它是不必要的。
我试图在读取管道时考虑是否有必要。通常你会在 EOF 条件后关闭,所以我认为也没有必要。
但是,如果您正在编写,则可能会在关闭时间检测到各种错误。最简单的例子是一个完整的磁盘。由于缓冲,在关闭文件句柄之前可能不会报告此问题。
你也可以use autodie(我认为推荐在Fatal之上)。
【讨论】:
如果文件已打开以供读取,则不需要。
但是,当打开文件进行写入时,可能无法在 close 处刷新 IO 缓冲区,因此在这种情况下它可能很有用
【讨论】:
是的,“或死”应该这样做。
但是在实践中,关闭文件时检查错误是不必要的,因为关闭可以合理地给你的唯一错误是“错误的文件描述符”,即文件一开始没有打开 - 这意味着它实际上成功了无论如何。
您也可以考虑使用 Fatal。 (perldoc 致命)
【讨论】: