jonnyw83 has asked for the wisdom of the Perl Monks concerning the following question:
Hi PerlMonks,
Perl beginner here struggling with a small bit of code. I want to loop through the keys of a hash and check to see whether the key was present in a previous array. This works ok. Then based on whether the key is found add a value (again previously defined in a loop) to the array that the key points to within one of two different hashes. Both hashes have identical keys but should be used to store differing data based on the outcome of IF. The sub bit of code is:
foreach my $key ( keys (%hasha)) {if ( my @temp = grep ( /$key/, @prevarray)){push(@{$hasha{$key}}, +$value); next;} #closes if loop else { push (@{$hashb{$key}},$value); next;} #closes if loop } #close foreach loop
At the moment this appears to be adding every $value to each key within both arrays. So there is no filtering and I can not work out why. Any hints would be much appreciated
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Updating arrays within hashes
by moritz (Cardinal) on Feb 10, 2011 at 10:06 UTC | |
|
Re: Updating arrays within hashes
by davido (Cardinal) on Feb 10, 2011 at 10:18 UTC | |
by jonnyw83 (Initiate) on Feb 10, 2011 at 12:20 UTC | |
|
Re: Updating arrays within hashes
by roboticus (Chancellor) on Feb 10, 2011 at 14:39 UTC | |
by jonnyw83 (Initiate) on Feb 10, 2011 at 16:40 UTC | |
|
Re: Updating arrays within hashes
by goibhniu (Hermit) on Feb 10, 2011 at 16:05 UTC | |
|
Re: Updating arrays within hashes
by Anonymous Monk on Feb 10, 2011 at 18:06 UTC |