14

私は死ぬことができることを知っていますが、それはスクリプト名と行番号を出力します。

私は次のようなことをするのが好きですdie 'error' if $problem;

行番号のものを印刷せずにそれを行う方法はありますか?

ブレースを使わなくてもいいのにif($problem){print 'error';exit}

4

5 に答える 5

24

dieエラー メッセージに改行を追加すると、追加された行番号/スクリプト名の言葉遣いが抑制されます。

die "Error\n"
于 2011-02-21T18:16:44.697 に答える
19

perl が行番号とファイル名を追加するのを防ぐために、die 文字列に新しい行を追加することができます:

die "oh no!\n" if condition;

または関数を書きます:

sub bail_out {print @_, "\n"; exit}

bail_out 'oh no!' if condition;

また、デフォルトで stdoutに出力さdieれる一方で、stderr に出力されることにも注意してください。print

于 2011-02-21T18:17:06.177 に答える
12

かなり自然に聞こえる次のように使用できます。

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;
于 2011-02-21T22:20:34.463 に答える
1

これは、Eric へのコメントで回答した質問に対する回答です。

両方 (STDOUT の出力と行番号なしの出力) を行うには、ハンドラーdieを変更することで引き続き使用できます。__DIE__

$SIG{__DIE__} = sub { print @_, "\n"; exit 255 };

die "error" if $problem;
于 2011-02-24T22:02:10.980 に答える
-4

次を使用して複雑なメッセージを作成できますsprintf

die sprintf( ... ) if $problem;
于 2011-02-21T18:44:39.627 に答える