Perl - difference between 'next' and 'continue'?
loops, perl
Solution
The `continue` keyword can be used after the block of a loop. The code in the `continue` block is executed before the next iteration (before the loop condition is evaluated). It does not affect the control-flow.
my $i = 0;
when (1) {
print $i, "\n";
}
continue {
if ($i < 10) {
$i++;
} else {
last;
}
}
Is almost equivalent to
foreach my $i (0 .. 10){
print $i, "\n";
}
The `continue` keyword has another meaning in the `given`-`when` construct, Perl's `switch`-`case`. After a `when` block is executed, Perl automatically `break`s because most programs do that anyway. If you want to fall through to the next cases the `continue` has to be used. Here, `continue` modifies the control flow.
given ("abc") {
when (/z/) {
print qq{Found a "z"\n};
continue;
}
when (/a/) {
print qq{Found a "a"\n};
continue;
}
when (/b/) {
print qq{Found a "b"\n};
continue;
}
}
Will print
Found a "a"
Found a "b"
The `next` keyword is only available in loops and causes a new iteration incl. re-evaluation of the loop condition. `redo` jumps to the beginning of a loop block. The loop condition is not evaluated.
Problem
Quick Perl question: when going through a loop (say a while loop), what is the difference between a `next` and `continue` command? I thought both just skip to the next iteration of the loop.