I don't think you're on the right track with the hash element not disappearing idea.
There are three possibilities:
1) $last is not defined. Easily verifiable with die("\$last is undef.\n") unless (defined($last));.
2) The key last is not found in %$_ for some element $_ of @{$bros->{$yr}}, as in the following structure:
$bros = { '1976' => [ { 'first' => 'Eric', # oops! no 'last'! }, } };
3) $_->{last} is not defined for some element $_ of @{$bros->{$yr}}, as in the following structure:
$bros = { '1976' => [ { 'first' => 'Eric', 'last' => undef, # oops! no value for 'last'! }, ], };
For (2) and (3), printing out $bros or @{$bros->{$yr}} with the help of Data::Dumper might help you locate the record with the missing 'last' or the one which has undef for value.
In reply to Re: Using grep to remove array element from HoAoH leaving empty array-hash element
by ikegami
in thread Using grep to remove array element from HoAoH leaving empty array-hash element
by Popcorn Dave
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |