如何使用IO :: File perl捕获错误

时间:2014-08-19 20:34:48

标签: perl file-io

通常你会这样做:

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;

3 个答案:

答案 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"

死在“$!”将错误消息显示为“没有这样的文件或目录”