my @db = (1, 3, 5, 7, 9, 11); my @in = (1, 2, 5, 8, 9, 10, 13); #### @lookup{@in} = (); #### @lookup1{@db} = (); #### my %lookup; @lookup{@in} = (); foreach my $elem (@db) { if (exists $lookup{$elem}) { @db = grep {not exists $lookup{$_}} @db; } } #### @lookup{@db} = (); foreach my $elem (@in) { if (not exists $lookup{$elem}) { push(@db, $elem); } }