perl-5.40.0
last LABEL
last EXPR
last

The last command is like the break statement in C (as used in loops); it immediately exits the loop in question. If the LABEL is omitted, the command refers to the innermost enclosing loop. The last EXPR form, available starting in Perl 5.18.0, allows a label name to be computed at run time, and is otherwise identical to last LABEL. The continue block, if any, is not executed:

last コマンドは、(ループ内で使った) C の break 文と 同じようなもので、LABEL で指定されるループを即座に抜けます。 LABEL が省略されると、コマンドは一番内側のループを参照します。 Perl 5.18.0 から利用可能な last EXPR 形式では、実行時に計算される ラベル名を使えます; それ以外は last LABEL と同一です。 continue ブロックがあっても実行されません:

    LINE: while (<STDIN>) {
        last LINE if /^$/;  # exit when done with header
        #...
    }

last cannot return a value from a block that typically returns a value, such as eval {}, sub {}, or do {}. It will perform its flow control behavior, which precludes any return value. It should not be used to exit a grep or map operation.

lasteval {}, sub {}, do {} といった 典型的には値を返すブロックから値を返せません。 これは、返り値を不可能にするフロー制御の振る舞いを実行します。 grepmap 操作を終了するのに 使うべきではありません。

Note that a block by itself is semantically identical to a loop that executes once. Thus last can be used to effect an early exit out of such a block.

ブロック自身は一回だけ実行されるループと文法的に同一であることに 注意してください。 従って、last でそのようなブロックを途中で 抜け出すことができます。

See also continue for an illustration of how last, next, and redo work.

last, next, redo が どのように働くかについては continue も参照してください。

Unlike most named operators, this has the same precedence as assignment. It is also exempt from the looks-like-a-function rule, so last ("foo")."bar" will cause "bar" to be part of the argument to last.

ほとんどの名前付き演算子と異なり、これは代入と同じ優先順位を持ちます。 また、関数のように見えるものの規則からも免れるので、last ("foo")."bar" と すると "bar" は last への引数の一部となります。