perl-5.20.1
$OS_ERROR
$ERRNO
$!

When referenced, $! retrieves the current value of the C errno integer variable. If $! is assigned a numerical value, that value is stored in errno. When referenced as a string, $! yields the system error string corresponding to errno.

参照されると、$! は C の errno 正数変数の現在の値を取得します。 $! に数値が代入されると、その値は errno に補完されます。 文字列として参照されると、$!errno に対応するシステムエラー 文字列を返します。

Many system or library calls set errno if they fail, to indicate the cause of failure. They usually do not set errno to zero if they succeed. This means errno, hence $!, is meaningful only immediately after a failure:

多くのシステムやライブラリ呼び出しは、失敗したときに、失敗の理由を示すために errno を設定します。 これらは普通は成功したときには errno にゼロを設定 しません。 これは、errno$! は、失敗直後 でのみ意味が あるということです:

    if (open my $fh, "<", $filename) {
                # Here $! is meaningless.
                ...
    }
    else {
                # ONLY here is $! meaningful.
                ...
                # Already here $! might be meaningless.
    }
    # Since here we might have either success or failure,
    # $! is meaningless.
    if (open my $fh, "<", $filename) {
                # ここで $! は無意味。
                ...
    }
    else {
                # ここでだけ $! に意味がある。
                ...
                # ここで既に $! は無意味かもしれません。
    }
    # ここでは成功と失敗の両方の可能性があるので、
    # $! は無意味。

Here, meaningless means that $! may be unrelated to the outcome of the open() operator. Assignment to $! is similarly ephemeral. It can be used immediately before invoking the die() operator, to set the exit value, or to inspect the system error string corresponding to error n, or to restore $! to a meaningful state.

ここで、無意味 というのは $!open() 演算子の結果に 関係ないということです。 $! への代入も同様に一時的なものです。 これは、終了値を設定したり、エラー n に対応するシステムエラー文字列を 調べたり、$! を意味のある状態に復元するために、die() 演算子を 起動する直前で使えます。

Note that when stringified, the text is always returned as if both "use locale" and "use bytes" are in effect. This is likely to change in v5.22.

文字列化するとき、テキストは常に、 "use locale""use bytes" の両方が 有効であるかのように返されます。 これは v5.22 で変更される予定です。

Mnemonic: What just went bang?

記憶法: 何が bang(!) したか。