Perl5 リファレンス

       redo LABEL

       redo    The `redo' command restarts the loop block without
               evaluating the conditional again.  The `continue'
               block, if any, is not executed.  If the LABEL is
               omitted, the command refers to the innermost
               enclosing loop.  This command is normally used by
               programs that want to lie to themselves about what
               was just input:

                   # a simpleminded Pascal comment stripper
                   # (warning: assumes no { or } in strings)
                   LINE: while () {
                       while (s|({.*}.*){.*}|$1 |) {}
                       s|{.*}| |;
                       if (s|{.*| |) {
                           $front = $_;
                           while () {
                               if (/}/) {      # end of comment?
                                   redo LINE;

               `redo' cannot be used to retry 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
               `redo' inside such a block will effectively turn
               it into a looping construct.

               See also the continue entry elsewhere in this
               document for an illustration of how `last',
               `next', and `redo' work.