Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# redo

Perl 5 version 18.2 documentation
Go to top
Show recent pages
Recently read

# redo

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- redo LABEL

- redo EXPR
- 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. The `redo EXPR` form, available starting in Perl 5.18.0, allows a label name to be computed at run time, and is otherwise identical to `redo LABEL` . Programs that want to lie to themselves about what was just input normally use this command:

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

  `redo` cannot be used to retry a block that 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 continue for an illustration of how `last`, `next`, and `redo` work.

  Unlike most named operators, this has the same precedence as assignment. It is also exempt from the looks-like-a-function rule, so `redo ("foo")."bar"` will cause "bar" to be part of the argument to `redo`.