2017-08-09 23 views
-1

Perl在Perl中有什麼含義?用Perl終止函數,除非

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

我剛開始學習Perl,所以我可以理解前兩行,只是很難理解第三行的終止函數。 terminate函數和unless defined在這裏做什麼?

是否有任何文檔或頁面鏈接,我可以閱讀有關終止函數除非定義的條件?

+2

'terminate'函數必須在此代碼的某處定義,即它不是標準的Perl函數。 '除非'意味着'如果不'。基本上這意味着如果'Spreadsheet :: WriteExcel-> new'失敗,將會調用terminate。至於文檔:那裏有許多Perl書籍或在線介紹。 –

回答

2

的代碼等同於:

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

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

Spreadsheet::WriteExcel->new返回undef如果失敗,如文檔中指出:

如果該文件不能被創建,由於文件權限或其他原因,新的將返回undef。因此,在繼續之前檢查新的返回值是一種很好的做法。像往常一樣,如果存在文件創建錯誤,則將設置Perl變量$!

terminate函數不是Perl內置的函數。它必須是您正在學習的代碼庫的一部分。從我所知道的情況來看,它爲記錄遇到的錯誤提供了一個共同點。

如果您遇到了問題,那麼您不應該首先進入複雜的程序。更好地獲得good book並首先學習基礎知識。

+0

謝謝你一個思南!這有很大幫助。 – Vicky