perl-5.40.0
next LABEL
next EXPR
next

The next command is like the continue statement in C; it starts the next iteration of the loop:

next コマンドは、C での continue 文のようなもので、 ループの次の繰り返しを開始します:

    LINE: while (<STDIN>) {
        next LINE if /^#/;  # discard comments
        #...
    }

Note that if there were a continue block on the above, it would get executed even on discarded lines. If LABEL is omitted, the command refers to the innermost enclosing loop. The next EXPR form, available as of Perl 5.18.0, allows a label name to be computed at run time, being otherwise identical to next LABEL.

continue ブロックが存在すれば、たとえ捨てられる行に あっても、それが実行されます。 LABEL が省略されると、コマンドは一番内側のループを参照します。 Perl 5.18.0 から利用可能な next EXPR 形式では、実行時に計算される ラベル名が使えます; それ以外は next LABEL と同一です。

next 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.

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

Note that a block by itself is semantically identical to a loop that executes once. Thus next will exit such a block early.

ブロック自身は一回だけ実行されるループと文法的に同一であることに 注意してください。 従って、next はそのようなブロックから早く抜けるのに使えます。

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 next ("foo")."bar" will cause "bar" to be part of the argument to next.

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