while (EXPR) { REDO: #body of while block } continue { NEXT: #body of next block } LAST: #### NEXT: while (EXPR) { REDO: # body of while block } LAST: #### # nb this is stupid code that shortens lines (a char at a time) # and prints the result, until it finds a z at the first pos. LINE: foreach(<>) { while(s/^.//) { print; last LINE if /^z/; #this also breaks the foreach loop. -- it jumps to the print "done"; statement } } print "done";