eval
の外では、LIST
の値を STDERR
に出力し、
現在の $!
(errno
) で exit
する。
もし $!
が 0 なら、
($?
>> 8 ) (`command`
のステータス) で exit
する。
もし ($?
>> 8 ) が 0 なら、255 で exit
する。
eval
の中では、エラーメッセージが $@ に入り、
eval
が undefined value で終了する。
die "Can't cd to spool: $!\n"
unless chdir '/usr/spool/news';
chdir '/usr/spool/news' || die "Can't cd to spool: $!\n"
EXPR
の値が改行で終わらない場合は、
スクリプトの現在の行番号および(もしあれば)入力行番号も表示され、
改行が付け加えられる。
ヒント:
メッセージに `, stopped' を付け加えておくと、
`at foo line 123' が付け加えられた時によりわかりやすい。
die "/etc/games is no good";
die "/etc/games is no good, stopped";
はそれぞれ次のように出力する。
/etc/games is no good at canasta line 123.
/etc/games is no good, stopped at canasta line 123.
See section exit.