通常你会这样做:
open( my $fh, "+<", "$thefile.txt") or die "Could not open $thefile.txt $!\n";
但你使用IO :: File(来自docs):
$fh = new IO::File;
if ($fh->open("< file")) {
print <$fh>;
$fh->close;
}
如果打开文件时出现问题,IO :: File会自动抛出错误吗?使用这个模块时会怎么做?
主要关注日志记录,你如何注销好的&#39;错误消息,例如&#39;没有这样的文件或目录&#39;
答案 0 :(得分:2)
来自IO::File
的文档:
构造
new ( FILENAME [,MODE [,PERMS]] )
创建
IO::File
。如果它接收到任何参数,则将它们传递给方法open
;如果打开失败,则对象被销毁。否则,它将返回给调用者。
因此,您可以像平常一样使用or die
语句:
use IO::File;
my $fh = IO::File->new('notfound.txt') or die "Can't open: $!";
输出:
Can't open: No such file or directory at script.pl line 5.
答案 1 :(得分:0)
$fh->open("< file")
将为false。所以只需添加else
:
$fh = new IO::File;
if ($fh->open("< file")) {
print <$fh>;
$fh->close;
}
else {
die("Cannot open file. Reason: $!");
}
答案 2 :(得分:0)
open( my $fh, "+<", "thefile.txt") or die "Could not open thefile.txt $!\n";
从file.txt中删除$ sign。您没有将文件名存储在变量中。
你可以使用
$file = 'thefile.txt';
open( my $fh, "<", "$file") or die "Could not open $file $!\n"
死在“$!”将错误消息显示为“没有这样的文件或目录”