Вам необходимо заключить в регулярное выражение $word
, если оно может содержать специальные символы (например, [
или даже .
). Попробуйте с:
if (grep(!/\Q$word\E/, @line_rd)) {
...
}
Если вы хотите составить словарь из всех слов, используйте хеш:
my %allwords;
...
# each time you have a new word incoming from the parser:
$allwords{$word}++;
В конце хэш %allwords
будет содержать отдельные слова в качестве ключей, а количество слов в качестве значений. Вы могли бы, например, распечатайте его, используя:
map {
print "Word $_: count: ", $allwords{$_}, "\n";
} (sort keys %allwords);