I'm using grep to remove an array element from a HoAoH and I assumed that if I deleted the array element, that the hash element would disappear as well. However, I'm getting a warning of "Use of uninitialized value in string eq" which I think is being generated because of the empty hash element in the array, but I can't figure out why grep would be looking at that after it has been eliminated.
This is the code I'm using:
@{$bros->{$yr}} = grep {!($_->{last} eq $last)} @{$bros->{$yr}};
And my data structure is:
where the person's data is stored in a hash in the year array.$bros = { '1958' => [{'first' =>, 'last' =>, etc...], '1959' => [{..}] +, etc..}
My question is, how to eliminate the warning error and eliminate the empty hash element in the array. I'm not exactly clear on how to undef the array element in the grep.
Would it be better to assign the anonymous structure to an array and then grep a physical array? I would think I would run in to the same problem.
Thanks in advance!
In reply to Using grep to remove array element from HoAoH leaving empty array-hash element by Popcorn Dave
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |