以下Perl的含义是什么?
my $workbook;
$workbook = Spreadsheet::WriteExcel->new($outputfile);
terminate("Problems creating new Excel file: $!", 'BATCH_CRITICAL') unless defined $workbook;
我刚刚开始学习Perl,所以我可以理解前两行,只是无法理解带终止功能的第3行。 terminate
函数和unless defined
在这做什么?
是否有任何文档或页面链接,除非定义条件,否则我可以阅读有关终止函数的内容?
答案 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并学习基础知识。