Вариантов несколько. Я бы использовал регулярные выражения.
my @words = (); // список слов - заполнить заранее любым способом
my $re;
$re = join('\E|\Q', @words);
if ($re eq '')
{
// слов в списке нет
}
else
{
$re = '\b(\Q' . $re . '\E)\b';
if (m/$re/)
{
// слова из списка встречаются
}
else
{
// таких слов нет
}
}
Вне зависимости от логики способ составления регулярного выражения можно не менять.
Предупреждаю - код не тестил: жду с минуты на минуту отключения электричества...