"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 forloop and the whileloop is the behaviour of nextinside it. In a forloop, nextskips 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