私は死ぬことができることを知っていますが、それはスクリプト名と行番号を出力します。
私は次のようなことをするのが好きですdie 'error' if $problem;
行番号のものを印刷せずにそれを行う方法はありますか?
ブレースを使わなくてもいいのにif($problem){print 'error';exit}
dieエラー メッセージに改行を追加すると、追加された行番号/スクリプト名の言葉遣いが抑制されます。
die "Error\n"
perl が行番号とファイル名を追加するのを防ぐために、die 文字列に新しい行を追加することができます:
die "oh no!\n" if condition;
または関数を書きます:
sub bail_out {print @_, "\n"; exit}
bail_out 'oh no!' if condition;
また、デフォルトで stdoutに出力さdie
れる一方で、stderr に出力されることにも注意してください。print
かなり自然に聞こえる次のように使用できます。
print "I'm going to exit now!\n" and exit if $condition;
perl 5.10 以降を使用していて、eguse 5.010;
をスクリプトの先頭に追加する場合say
は、改行を自分で追加する必要がないように , を使用することもできます。
say "I'm going to exit now!" and exit if $condition;
これは、Eric へのコメントで回答した質問に対する回答です。
両方 (STDOUT の出力と行番号なしの出力) を行うには、ハンドラーdie
を変更することで引き続き使用できます。__DIE__
$SIG{__DIE__} = sub { print @_, "\n"; exit 255 };
die "error" if $problem;
次を使用して複雑なメッセージを作成できますsprintf
。
die sprintf( ... ) if $problem;