@data = (
{
id => '1',
name => 'Tom',
sex => 'Male',
},
{
id => '2',
name => 'Harry',
sex => 'Male',
},
{
id => '3',
name => 'Pam',
sex => 'Female',
},
{
id => '4',
name => 'Dick',
sex => 'Male',
}
);
####
use strict;
use warnings;
use Storable qw / dclone /;
#my @data = ( ... ) As shown above;
my $data2;
for my $href ( @data ) {
my $copy_ref = dclone($href);
my $sex = $copy_ref->{sex};
delete $copy_ref->{sex};
push @{ $data2->{$sex} }, $copy_ref;
}
use Data::Dumper;
print Dumper $data2;
####
$VAR1 = {
'Female' => [
{
'name' => 'Pam',
'id' => '3'
}
],
'Male' => [
{
'name' => 'Tom',
'id' => '1'
},
{
'name' => 'Harry',
'id' => '2'
},
{
'name' => 'Dick',
'id' => '4'
}
]
};