做了“或者死亡$!” - 在“关闭$ fh或者死亡$ !;”的部分 - 有什么好处?我是否需要“关闭FILEHANDLE”检查错误?
#!/usr/bin/env perl
use warnings;
use strict;
my $file = 'my_file';
open my $fh, '<', $file or die $!;
print <$fh>;
close $fh or die $!;
做了“或者死亡$!” - 在“关闭$ fh或者死亡$ !;”的部分 - 有什么好处?我是否需要“关闭FILEHANDLE”检查错误?
#!/usr/bin/env perl
use warnings;
use strict;
my $file = 'my_file';
open my $fh, '<', $file or die $!;
print <$fh>;
close $fh or die $!;
在您的例子是有用的,因为它是在你的脚本结束并在一个可供阅读的文件上,这是无稽之谈。
我在想,如果读取管道时有必要。通常情况下,您在EOF条件后关闭,所以我认为这也不是必需的。
但是,如果您正在编写,可能会在近距离检测到各种错误。最简单的例子是一个完整的磁盘。这可能因为缓冲而关闭文件句柄才会被报告。
你也可以use autodie
(推荐以上致命,我认为)。
是的,“或死”应该这样做。
但是在实践中检查关闭文件时的错误是不必要的,因为close可以合理地给你的唯一错误是“坏文件描述符”,即文件首先没有打开 - 这意味着它是有效的无论如何,成功了。
你也可以考虑使用致命的。 (perldoc致命)
如果该文件是打开阅读不需要的。
然而,当文件被打开写有可能是IO缓冲区不能在close
被刷新,所以它可能是在这种情况下
如果句柄对管道打开并且进程因错误而终止,那么您也可能在关闭时出错。 – hobbs 2010-01-15 08:23:24
您也可以从之前的写入中得到一个错误(如果写入被缓冲并且在系统调用返回后发生错误)。 – cjm 2010-01-15 08:47:15
当磁盘已满时,您也可能会收到错误消息。 – daxim 2010-01-15 09:23:18