die関数 - エラーメッセージを表示してプログラムを終了
エラーメッセージを表示してプログラムを終了するにはdie関数を使用します。メッセージの末尾にはプログラムが終了した行番号が自動的に追加されます。行番号を表示させないようにするには末尾を改行で終えます。
# エラーメッセージを表示してプログラムを終了 # 行番号あり die $message; # 行番号なし die "$message\n";
引数が存在しなかった場合に使用方法を表示してプログラムを終了させるサンプルです。$0はスクリプト名です。
# 引数が存在しなかった場合にプログラムを終了 my $file = shift; die "Usage: $0 [file]" unless $file;
ファイルオープンに失敗した場合にプログラムを終了させるサンプルです。
# ファイルオープンに失敗した場合にプログラムを終了 my $file = 'a.txt'; open my $fh, '<', $file or die "Can't open file \"$file\": $!";
プログラムが正常に終了した場合の終了ステータスは0です。dieでプログラムを終了した場合の終了ステータスは0以外の値になります。dieの終了ステータスは次のような規則で決まります。
1. $! を数値で評価した値。(OSから通知されたエラー) 2. $!が0だった場合は($? >> 8)。(子プロセスの終了ステータス) 3. ($? >> 8)が0だった場合は255
例外処理
Javaなどの言語では例外と呼ばれる仕組みが用意されています。Perlではdieとevalブロックを使用する簡潔な例外処理機構が用意されています。
例外を投げるにはdieを使用します。例外をキャッチするには「eval {}」を使用します。例外が発生したかどうかの判定には$@を使用します。例外が発生した場合は$@にエラーメッセージが設定されます。
# 例外処理の流れ eval { # dieを使うプログラムを終了させるような処理 }; if ($@) { # 例外処理 }
例外処理の簡単なサンプルです。
# 例外処理 my $num; eval { die "Number is undefined." unless defined $num; }; if ($@) { die "Catch and throw again $@"; }
Perlの例外処理についての詳しい解説は以下を参考にしてください。