Есть два способа сделать это. Вы можете использовать бросок значений в хеш для таблицы поиска, как предложено в других публикациях. (Я добавлю еще одну идиому.)
my %bad_param_lookup;
@bad_param_lookup{ @bad_params } = ( 1 ) x @bad_params;
Но если это данные, состоящие в основном из символов слова и не слишком много мета, вы можете поместить их в чередование регулярных выражений:
use English qw<$LIST_SEPARATOR>;
my $regex_str = do {
local $LIST_SEPARATOR = '|';
"(?:@bad_params)";
};
# $front_delim and $back_delim being any characters that come before and after.
my $regex = qr/$front_delim$regex_str$back_delim/;
Это решение должно быть настроено для типов "плохих значений", которые вы ищете. И снова, это может быть совершенно неуместно для определенных типов строк, поэтому caveat emptor .