my %lookup; @lookup{@in} = (); foreach my $elem (@db) { if (exists $lookup{$elem}) { @db = grep {not exists $lookup{$_}} @db; } }