# perl -MBenchmark -de0
DB<1> @a = qw(1 3 5 7 9)
DB<2> @b = qw(a d f 5 h 7 r 1 l 3 p)
DB<3> $re = "(?:" . join ("|",@a) . ")"
DB<4> timethese (1_000_000,{\'A\' => sub { my @c = grep !/^$re$/o,@b; },\'B\' => sub { map { my $i = 0; for my $el (@a){$i = 1, $_ if $_ eq $el} push @c, $_ if !$i} @b;} })
Benchmark: timing 1000000 iterations of A, B...
A: 35 wallclock secs (30.43 usr + 0.10 sys = 30.53 CPU) @ 32754.67/s (n=1000000)
B: 85 wallclock secs (74.15 usr + 1.46 sys = 75.61 CPU) @ 13225.76/s (n=1000000)