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