my @lowercase_b = map lc, @b; my %lowercase_a = map { lc, $_ } @a; my @intersection_and_undefs = @lowercase_a{@lowercase_b}; my @intersection = grep defined, @intersection_and_undefs;