=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