perl-5.20.1
warn LIST

Prints the value of LIST to STDERR. If the last element of LIST does not end in a newline, it appends the same file/line number text as die does.

LIST の値を STDERR に出力します。 LIST の最後の要素が改行で終わっていない場合、die が行うのと同様の ファイル/行番号のテキストが追加されます。

If the output is empty and $@ already contains a value (typically from a previous eval) that value is used after appending "\t...caught" to $@. This is useful for staying almost, but not entirely similar to die.

出力が空かつ、(典型的には以前の eval によって) $@ に既に値が入っている 場合、$@"\t...caught" を追加した値が用いられます。 これはほとんどそのままにするときに便利ですが、 die と全体的に似ているわけではありません。

If $@ is empty then the string "Warning: Something's wrong" is used.

$@ が空の場合は、"Warning: Something's wrong" という文字列が 使われます。

No message is printed if there is a $SIG{__WARN__} handler installed. It is the handler's responsibility to deal with the message as it sees fit (like, for instance, converting it into a die). Most handlers must therefore arrange to actually display the warnings that they are not prepared to deal with, by calling warn again in the handler. Note that this is quite safe and will not produce an endless loop, since __WARN__ hooks are not called from inside one.

$SIG{__WARN__} ハンドラが設定されている場合は何のメッセージも 表示されません。 メッセージをどう扱うか(例えば die に変換するか)はハンドラの 責任ということです。 従ってほとんどのハンドラは、扱おうと準備していない警告を表示するために、 ハンドラの中で warn を再び呼び出します。 __WARN__ フックはハンドラ内では呼び出されないので、これは十分安全で、 無限ループを引き起こすことはないということに注意してください。

You will find this behavior is slightly different from that of $SIG{__DIE__} handlers (which don't suppress the error text, but can instead call die again to change it).

この振る舞いは $SIG{__DIE__} ハンドラ(エラーテキストは削除しませんが、 代わりに die をもう一度呼び出すことで変更できます)とは 少し違うことに気付くことでしょう。

Using a __WARN__ handler provides a powerful way to silence all warnings (even the so-called mandatory ones). An example:

__WARN__ ハンドラを使うと、(いわゆる必須のものを含む)全ての 警告を黙らせる強力な手段となります。 例:

    # wipe out *all* compile-time warnings
    BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
    my $foo = 10;
    my $foo = 20;          # no warning about duplicate my $foo,
                           # but hey, you asked for it!
    # no compile-time or run-time warnings before here
    $DOWARN = 1;

    # run-time warnings enabled after here
    warn "\$foo is alive and $foo!";     # does show up

See perlvar for details on setting %SIG entries and for more examples. See the Carp module for other kinds of warnings using its carp() and cluck() functions.

%SIG エントリのセットに関する詳細とさらなる例に関しては perlvar を参照してください。 carp() 関数と cluck() 関数を用いた警告の方法に関しては Carp モジュールを参照してください。