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.
In reply to Re: How to filter few key value pairs from hash reference
by einhverfr
in thread How to filter few key value pairs from hash reference
by jaypal
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |