Loops
Loops are blocks that are evaluated several times. They are usually used for repetitive actions, walking through the data structure etc.
For/Foreach
Foreach loop is usually used for looping through the list or array. For example:
foreach my $element (1, 2, 3, 4, 5) {
say $element;
}
You can pass an array of course:
my @array = (1 .. 5);
foreach my $element (@array) {
say $element;
}
As you can see we create a special $element variable that is aliased to every array element on every iteration. Beware that by changing the $element value you change the actual value in the array:
my @array = (1 .. 5);
foreach my $element (@array) {
$element *= 2;
}
foreach my $element (@array) {
say $element;
}
Exercise
Print only the even values from 0 to 10:
foreach my $element (...) {
if (...) {
...
}
}
While
While is a more advanced loop that iterates while the expression is true.
my $i = 10;
while ($i > 0) {
say $i;
$i = $i - 1;
}
As soon as expression $i > 0 becomes false the loop stops.
Exercise
Print only the odd values from 0 to 10:
my $i = ;
while ($i ...) {
if (...) {
...
}
}
Getting out of the loop
Often you want to terminate the loop without waiting until it finishes. You usually use the last keyword:
my $i = 0;
while ($i < 100) {
last if $i == 10;
say $i;
$i = $i + 1;
}
This loop will not iterate 100 times because we terminate it when $i is 10.
