in reply to error message in the end of the array looping?
A good answer needs a little more context. For example, if the loop is in a sub then you can return rather than last when you get and have dealt with the match:
# always use strictures (the following two lines) use strict; use warnings; my @array = qw(key1 key2 key3 key4); my %hash = (key2 => undef, key4 => 'The goods', key5 => 'More goods'); doLoop (); sub doLoop { for my $key (@array) { next if ! exists $hash{$key}; # Skip if the key is not used in + the hash next if ! defined $hash{$key}; # Skip if the key exists, but i +s undefined next if $hash{$key} ne 'No goods'; print "The value for '$key' is '$hash{$key}'\n"; return; } print "Failed to find matching key\n" }
Prints:
Failed to find matching key
Without the sub, or if there is more work to do following the loop, you need to keep note of match success. Something like:
use strict; use warnings; my @array = qw(key1 key2 key3 key4); my %hash = (key2 => undef, key4 => 'The goods', key5 => 'More goods'); my $match = 0; for my $key (@array) { next if ! exists $hash{$key}; # Skip if the key is not used in the + hash next if ! defined $hash{$key}; # Skip if the key exists, but is un +defined next if $hash{$key} ne 'No goods'; print "The value for '$key' is '$hash{$key}'\n"; $match = 1; last; } print "Failed to find matching key\n" if ! $match;
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: error message in the end of the array looping?
by dsheroh (Monsignor) on May 30, 2006 at 16:18 UTC | |
by GrandFather (Saint) on May 30, 2006 at 19:15 UTC | |
by dsheroh (Monsignor) on May 30, 2006 at 20:07 UTC |