my @big = qw( a b c d e f g h i a ); my @small = qw( f c d g ); my %found; undef @found{@small}; my @wanted = ( @small, grep{ !exists $found{ $_ } } @big ); print("@wanted\n"); # f c d g a b e h i a