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
continue block, if any, is not executed:
LINE: while (<STDIN>) {
last LINE if /^$/; # exit when done with header
#...
}
last cannot be used to exit a block which returns a value such as
eval {}, sub {} or do {}, and should not be used to exit
a grep() or map() operation.
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.
See also /continue for an illustration of how last, next, and
redo work.