for my $id (keys %$final_data){ my $ar = $final_data->{$id}[0]; my @lines=(); for my $ar (@$ar){ push @lines,{ ACCOUNT=>$ar->[0], NAME =>$ar->[1], DATE =>$ar->[2], } if $ar->[0] ne $ar->[0]; # <<<<<< prevent dups here } push @data, { ID => $id, LINE => \@lines }; }