use strict; my @a=qw(a b c d); my @b=qw(b a e f); # this does exactly what your pair of 'for' loops # did... my @m = map { my $x = $_; grep { /^$x$/ } @b; } @a; print @m; print "\n";