[ { 'Street'=>'NuN', 'ID'=>'232', 'State'=>'KKDI' 'Forename' =>'alex', 'Surname'=>'davis', }, { 'Street'=>'NuN', 'ID'=>'25452', 'State'=>'TRY', 'Forename'=>'George', 'Surname'=>'Daniel' }, { 'Street'=>'NuN', 'ID'=>'74545', 'State'=>'MDU', 'Forename'=>'Mark', 'Surname'=>'Davies' } ] #### [ { 'User'=>{ 'Forname' =>'' 'Surname'=>'' } 'Residence'=>{ 'Street' =>'', 'State' =>'', }, } ] #### foreach my $results(@$hash_of_excel){ my $specificresults = GroupResults($results); } sub GroupResults{ my( $AllRecords )= @_; my $specificResults = {}; foreach my $colname(keys %$AllRecords){ for my $group ('User','Residence','IDs','Profile'){ $specificResults->{$group}->{$colname} = $AllRecords->{$colname}; } } warn Dumper($specificResults); return $specificResults; }