The Loop Statements
Different loop statements in perl…
- The for Loop
- The foreach Loop
- The while Loop
- The do-while Loop
- The until Loop
The process of executing a code block repetitively is known as
iteration. To perform iteration in applications, use the loop
statements, such as for and while.
The loop statements check a condition and repetitively execute the
enclosed statements until the condition is true. The loop
terminates only when the condition becomes invalid.
The for Loop
This loop is used to execute a given set of statements for a fixed
number of times. The syntax of the for loop is:
for(initialization;testing;updation) { block of statement(s); }
In these statements:
initialization: Is the code to declare and initialize the
loop counter. Loop counter is a variable to keep a check on the
number of iterations. Initialization happens only once before the
beginning of the loop.
testing: Is the code, which specifies the condition to
control the number of iterations. The loop executes until the
result of testing is true. When the condition becomes false, the
control passes to the statement following the loop.
updation: Is the code to modify the loop counter after each
iteration. It can increment or decrement the loop counter,
according to the program requirements. Updation occurs at the end
of the loop.
block of statement(s): Is the code to be executed
iteratively. This code must be enclosed within the curly braces.
Note The three expressions for initialization, condition, and
updation are optional. If you leave the condition expression empty,
the for loop will be an infinite loop.
#! /usr/bin/perl print "Enter a digit to create its table: "; $a = ; chomp($a); for($b=1;$b<=10;$b++) { print $a.' x '.$b.' = '. $a*$b."n"; }
loop counter $b to 1.
stored in $b is less than or equal to 10.
$b by 1.
The Nested for Loop
A for loop contained inside another for loop is called a nested for
loop. This is used when the data is to be stored and printed in a
tabular format having multiple rows and columns.
#! /usr/bin/perl for($a=0;$a<=9;$a++){ for($b=0;$b<=$a;$b++){ print "*"; } print "n"; }
In this program:
- The outer loop works until the value of $a is less than or
equal to 9.
- The inner loop works until the value of $b is less than or
equal to the value of $a.
- The newline character n is used to enter a newline after every
row.
Note The nested for loops are used with multidimensional arrays.
For more information on arrays.
The foreach Loop
This loop operates on arrays. An array stores multiple related
values in a row that can be accessed easily using the foreach loop.
The syntax of the foreach loop is:
foreach $var_name (@array_name) { block of statement(s); }
In this syntax:
- @array_name is the array whose elements are accessed using the
foreach loop.
- $var_name is the scalar variable that stores the value of
element of @array_name for each iteration.
- This loop is repeated for all the elements in the array. The
code used for the foreach loop is:
#! /usr/bin/perl @names = ("George", "Jack", "Davis"); foreach $word(@names) { print "$wordn"; }
This example, when executed, prints values of all the elements in
the @names array one-by-one using the foreach loop. The output of
the example is shown in Figure 4-5:
The while Loop
There may be situations when you do not know the number of times a
loop is to be executed. For example, an application accepts and
stores the scores of students in a class, and you do not know the
number of students in a class. In this example, you can use the
while loop.
The while loop executes as long as the condition specified is true.
The condition can be any valid relational expression, which returns
true or false.
This loop is also known as Pre-Check or Pre-Tested Looping
Construct because the condition is checked before executing the
statement(s) in the block.
The syntax of the while loop is:
while (condition) { block of statement(s); }
In these statements, block of statement(s) is executed only if the
condition is true.
Note The code block must be enclosed within curly braces.
#! /usr/bin/perl $a = 1; while ($a <= 10) { print "$an"; $a++; }
In this example:
- $a, the loop counter is initialized to 1.
- The condition checks whether $a is less than or equal to 10.
- The value of $a is incremented by 1 in each iteration using the
post increment operator (++).
- The loop prints the numbers from 1 to 10 until the value of $a is less than or equal to 10. When $a is incremented to 11, the condition results in false, and the loop terminates.
The do-while Loop
The do-while loop is used when you want to execute a code block at
least once unconditionally, and then iteratively on the basis of a
condition.
In this loop, condition is tested at the end of the loop. Because
of this, this loop is also known as Post-Check or Post Tested
Looping Construct.
The syntax of the do-while loop is:
do { block of statement(s); } while (condition);
#! /usr/bin/perl $a = 2; do { print "$an"; $a+=2; } while ($a<=20);
In this example:
- $a, the loop counter is initialized to 2.
- The loop prints the value of $a and also increments it by 2.
- The condition associated with while tests whether the value of
$a is less than or equal to 20.
- The loop prints even numbers until the value of $a is less than
or equal to 20. When $a is equal to 22, the loop terminates.
The until Loop
In case of the while loop, the code that follows condition is
executed only if the condition is true. In the case of the until
loop, code associated with the condition is executed only if the
condition is false. The syntax of the until loop is:
until(condition) { block of statement(s); }
In this syntax, the block of statement(s) is executed only when the
condition returns false.
#! /usr/bin/perl $a = 1; until(a == 11) { print $a."n"; $a++; }
In this program:
- $a, the loop counter is initialized to 1.
- The condition checks whether $a is equal to 11.
- The loop prints and increments the value of $a.
- The condition returns false until $a is less than 11, and the
code in the loop prints from 1 to 10. The moment $a is equal to 11,
the condition is met and loop is terminated.