=over =item last LABEL X<last> X<break> =item last EXPR =item last The L<C<last>|/last LABEL> command is like the C<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 C<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 C<last LABEL>. The L<C<continue>|/continue BLOCK> block, if any, is not executed: LINE: while (<STDIN>) { last LINE if /^$/; # exit when done with header #... } L<C<last>|/last LABEL> cannot return a value from a block that typically returns a value, such as C<eval {}>, C<sub {}>, or C<do {}>. It will perform its flow control behavior, which precludes any return value. It should not be used to exit a L<C<grep>|/grep BLOCK LIST> or L<C<map>|/map BLOCK LIST> operation. Note that a block by itself is semantically identical to a loop that executes once. Thus L<C<last>|/last LABEL> can be used to effect an early exit out of such a block. See also L<C<continue>|/continue BLOCK> for an illustration of how L<C<last>|/last LABEL>, L<C<next>|/next LABEL>, and L<C<redo>|/redo LABEL> work. Unlike most named operators, this has the same precedence as assignment. It is also exempt from the looks-like-a-function rule, so C<last ("foo")."bar"> will cause "bar" to be part of the argument to L<C<last>|/last LABEL>. =back