use warnings; use strict; use Data::Dumper; my $aref = [ { 'name' => 'Tim', 'total' => 4, 'months' => 1, 'days' => 3 }, { 'total' => 22, 'name' => 'Adam', 'days' => 22 }, { 'name' => 'Keas', 'total' => 114, 'months' => 5, 'days' => 107, 'test' => 2 } ]; my $href; $href->{delete $_->{name}} = $_ for @$aref; print Dumper $href;