This: $lab = "INNER"; OUTER: for (1..4) { INNER: for (1..4) { last $lab; } print "Done with INNER\n"; } print "Done with OUTER\n"; Says Label not found for "last " at /tmp/a line 5. Exit -1 Which is quite different from what you'd get if you had said "last BAD" there instead: Label not found for "last BAD" at /tmp/a line 5. The missing piece after the last in the first message seems wrong. I'd also like to know why Perl let me compile something that it had no intention of honoring. :-( --tom