in reply to problem with foreach statement
foreach my $adv79key (keys %adv79) { my $old; foreach my $exerrors (@exerrors) { if ($adv79key == $exerrors) { $old = 1; last; # shortcut. } } if ($old) { print "$adv79key is an old error\n"; } else { print "$adv79key is a new error\n"; } }
Simplified (but removes shortcut):
foreach my $adv79key (keys %adv79) { if ( grep { $adv79key == $_ } @exerrors ) { print "$adv79key is an old error\n"; } else { print "$adv79key is a new error\n"; } }
Optimized for speed:
my %exerrors = map { 0+$_ => 1 } @exerrors; foreach my $adv79key (keys %adv79) { if ( $exerrors{0+$adv79key} ) { print "$adv79key is an old error\n"; } else { print "$adv79key is a new error\n"; } }
The "0+"s are probably optional. Just trying to be as close to the original as possible.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: problem with foreach statement
by ultibuzz (Monk) on Dec 31, 2005 at 21:18 UTC |