Contents | Up | Prev | Next |

An important difference between the `for`

loop and the `while`

loop is the behaviour of `next`

inside it. In a `for`

loop, `next`

skips the rest of the iteration but still executes the iteration commands which were passed to the loop as arguments.

For example, the following program prints the first 200 primes:

MAIN_LOOP: for( @primes=(2), $i=3 ; scalar(@primes) < 200 ; $i++ ) { foreach $p (@primes) { if ($i % $p == 0) { next MAIN_LOOP; } } push @primes, $i; } print join(", " , @primes), "\n";

Now, the equivalent program using a while loop:

@primes = (2); $i = 3; MAIN_LOOP: while (scalar(@primes) < 200) { foreach $p (@primes) { if ($i % $p == 0) { next MAIN_LOOP; } } push @primes, $i; $i++; } print join(", " , @primes), "\n";

gets stuck. (**why?**)

Contents | Up | Prev | Next |

Written by Shlomi Fish