Perl's do .. until loop is almost exactly the same as the
until loop with one crucial difference - the code is executed
before the expression is evaluated. It is used to loop through a designated block of code
until a specific condition is evaluated as true. It is the logical opposite of the
do .. while loop.
do {
...
} until (expression);
Perl starts by executing the code inside the do .. until block, then the expression inside the parenthesis is evaluated. If the expression evaluates as
false the code is executed again, and will continue to execute in a loop until the expression evaluates as
true. Let's look at an example of Perl's do .. until loop in action and break down exactly how it works, step by step.
$count = 10;
do {
print "$count ";
$count--;
} until ($count == 0);
print "Blastoff.\n";
Running this simple Perl script produces the following output:
10 9 8 7 6 5 4 3 2 1 Blastoff.
First we set the string
$count to a value of 10.
$count = 10;
Next comes the start of the
do .. until loop, and the code inside the block is executed. Next, the expression in the parenthesis is evaluated:
until ($count == 0)
If the until expression is evaluated as
false, the code inside the block is executed again and the expression is re-evaluated. When it finally evaluates as
true, the rest of the Perl script is executed.
- $count is set to a value of 10.
- Execute the code block inside the do .. until loop.
- Is $count is equal to 0? If not, repeat the do .. until loop, otherwise exit the do .. until loop.
The end result is that $count starts at 10 and comes down by 1 every time the loop is executed. When we print the value of $count, we can see that the loop is executed
until $count has a value
equal to 0, at which point the loop stops and the word 'Blastoff' is printed.
- A do .. until loop is a Perl control structure.
- It is used to step through a block of code until a specific condition is true, but executes the code before evaluating the expression.