除非使用Perl终止函数

时间:2017-08-09 17:45:23

标签: perl

以下Perl的含义是什么?

 my $workbook;
 $workbook = Spreadsheet::WriteExcel->new($outputfile);
 terminate("Problems creating new Excel file: $!", 'BATCH_CRITICAL') unless defined $workbook;

我刚刚开始学习Perl,所以我可以理解前两行,只是无法理解带终止功能的第3行。 terminate函数和unless defined在这做什么?

是否有任何文档或页面链接,除非定义条件,否则我可以阅读有关终止函数的内容?

1 个答案:

答案 0 :(得分:2)

代码相当于:

my $workbook;
$workbook = Spreadsheet::WriteExcel->new($outputfile);

if (!defined($workbook)) {
    terminate("Problems creating new Excel file: $!", 'BATCH_CRITICAL');
}

Spreadsheet::WriteExcel->new如果失败,则返回undef,如文档中所述:

  

如果由于文件权限或其他原因无法创建文件,则new将返回undef。因此,最好在继续之前检查新的返回值。像往常一样,如果存在文件创建错误,将设置Perl变量$!

terminate函数不是内置的Perl。它必须是您正在学习的代码库的一部分。据我所知,它为记录遇到的错误提供了一个共同点。

如果你遇到这方面的问题,你就不应该首先进入复杂的程序。最好先获得good book并学习基础知识。