2017-08-09 9 views
-1

Perlでは次のような意味がありますか?Perlで関数を終了させる場合

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

私は最初の2行を理解できるように、ちょうどPerlの学習を始めました.3行目を終了関数で理解するのに問題があります。 terminateの機能とunless definedの機能は何ですか?

定義された条件がない限り、関数の終了について読むことができるドキュメントまたはページのリンクはありますか?マニュアルに述べたように、それが失敗した場合

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

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

Spreadsheet::WriteExcel->new戻りundef

+2

'terminate'関数はこのコードのどこかで定義する必要があります。つまり、標準のPerl関数ではありません。 'でないならば' 'を意味する。基本的に 'Spreadsheet :: WriteExcel-> new'が失敗した場合、' terminate'が呼び出されることを意味します。ドキュメンテーションについては、多くのPerlの書籍やオンラインの紹介があります。 –

答えて

2

コードは同等です

ファイルが原因ファイルのアクセス権またはその他の理由により、作成することができない場合、新しいはundefを返します。したがって、先に進む前にnewの戻り値を確認することをお勧めします。通常どおり、Perl変数$!は、ファイルの作成エラーがある場合に設定されます。

terminate機能はPerlビルトインではありません。それはあなたが勉強しているコードベースの一部でなければなりません。私が知ることから、遭遇したエラーを記録する共通のポイントが提供されます。

あなたがこの問題を抱えている場合は、まずは複雑なプログラムの中でダイビングを始めるべきではありません。 good bookを入手し、まず基本を学ぶ方がよいでしょう。

+0

ありがとうトンシナン!それは大いに役立ちます。 – Vicky

関連する問題