foreach my $case ( @{$all_cases} ) { if ( $case_list && $case->{examiner} eq $case_list->[0]->{examiner} ) { push @{ $case_list->[0]->{casedata} }, $case; } else { unshift @{$case_list}, { examiner => $case->{examiner}, casedata => [$case] }; } } @{$case_list} = reverse @{$case_list};