The do {} while/until Statement
The while/until statement you saw in the previous
section tests its condition at the top of every loop, before the loop
is entered. If the condition was already false to begin with, the
loop won’t be executed at all.
But sometimes you don’t want to test the condition at the top
of the loop. Instead, you want to test it at the bottom. To fill this
need, Perl provides the do
{}
while statement, which is just like the regular
while
[41] statement except
that it doesn’t test the expression until after executing the
loop once. For example:
do {
statement_1;
statement_2;
statement_3;
} while (some_expression);Perl executes the statements in the do block. When
it reaches the end, it evaluates the expression for truth. If the
expression is false, the loop is done. If it’s true, then the
whole block is executed one more time before the expression is once
again checked.
As with a normal while loop, you can invert the
sense of the test by changing do
{}
while to
do
{}
until.
The expression is still tested at the bottom, but its sense is
reversed. For some cases, especially compound ones, this is the more
natural way to write the test:
$stops = 0;
do {
$stops++;
print "Next stop? ";
chomp($location = <STDIN>);
} until $stops > 5 || $location eq 'home';[41] Well, this statement is not quite true; the loop control directives explained in Chapter 9, Miscellaneous Control Structures, don’t work for the bottom-testing form.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access