"Perl for Perl Newbies" - Part 2The for LoopBehaviour of next in the for Loop

1.1. Behaviour of next in the for Loop

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?)


Written by Shlomi Fish