The next command is like the continue statement in C; it starts the next iteration of the loop: LINE: while (<STDIN>) { next LINE if /^#/; # discard comments #... } Note that if there were a continue block on the above,it would get executed even on discarded lines. If the LABEL is omitted,the command refers to the innermost enclosing loop. next 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 next will exit such a block early.