my $match_code = join(' and ', map "\$_[0] =~ /\Q$_\E/", @searchCriteria ); my $matcher = eval "sub { $match_code }; "; my @newArray = grep $matcher->($_), @largeArray;