for my $row ( @{$serials}) { my $equ = $$row[$equIndex]; my $pmf = $$row[$pmfIndex]; my $pro = $$row[$proIndex]; my $serial = $$row[$serialIndex]; my $usr = $$row[$usrIndex]; my $date = $$row[$dateIndex]; my $clean = $$row[$cleanIndex]; if ($duplicates{$clean}) { push (@{$duplicates{$clean}}, [$equ, $pmf, $pro, $serial, $usr, $date]); } else { %duplicates = ($clean => [$equ, $pmf, $pro, $serial, $usr, $date]); } } #### clean1 -> [[equ info] -> [equ info]] clean2 -> [equ info] clean3 -> [[equ info] -> [equ info] -> [equ info]] #### clean1 -> [equ info, array] clean2 -> [equ info] clean3 -> [equ info, array, array]