in reply to next in block in foreach-loop

The problem is an extra set of braces you are using in the second bit of code there. You have a nested bare block inside the foreach, the next breaks out of it, NOT the foreach.

use strict; my @list = qw(0 1 2 3 4 5); foreach (@list){ #opens up the foreach block . . . { #opens up a new block . . . next if $_ == 0; #breaks out of enclosing block } #meaning it breaks to here. print $_, " "; #so '0' get's printed anyway } #ends the foreach

Be careful about these extra blocks by using labels and explicitly breaking with them. Labels are goood practice for complicated loop structures anyway, for clarity's sake.

Cheers,
Erik