my $matched=0; my $index=0; foreach my $emp (@found){ DN: foreach my $id (keys %manager){ foreach my $mgr (keys %{$manager{$id}}){ for my $i(0..$#{$manager{$id}{$mgr}{'members'}}){ if ($emp->{'ID'}=~/$manager{$id}{$mgr}{'members'}[$i]/i){ print $emp->{'Name'} . "\n"; $matched++; splice(@found, $index, 1); --$index; last DN;}}}} $index++;}