in reply to How to filter few key value pairs from hash reference
A simple way to do this would be to copy using map and grep. Note since you are doing this multiple times you will probably be better off with a for loop in this case, but this is good to know because if you don't want to do this multiple times, map is usually cleaner:
my $categorized_data = { Male => map { id => $_->{id}, name => $_->{name} } grep { $_->{sex} eq 'Male' } @data, Female => map { id => $_->{id}, name => $_->{name} } grep { $_->{sex} eq 'Female' } @data, };
Naturally the above is just an example. You probably wouldn't want to grep and map each list multiple times if it was very large, but if you were filtering a small number of keys on a small subset of a list that's how I would do it.
|
|---|