проблема с регулярным выражением при анализе файла .pdf с использованием CAM :: PDF - PullRequest
0 голосов
/ 19 мая 2011

Unmatched [в регулярном выражении; отмечены <- ЗДЕСЬ в м / <- ЗДЕСЬ / at ./pdf_parse.pl строка 37. </p>

На самом деле я разбираю файл .pdf слово за словом [чтобы сделать из него словарь] строка 37: -

if(grep(!/$word/,@line_rd)){
}

Ну, собственно слово, где скрипт парсера перестает работать, написано другим шрифтом [в pdf-файле, который я анализирую], это здесь виновник?
Распознает ли CAM :: PDF слова в разных шрифтах? Какую осторожность я должен сделать, чтобы остановить это!

1 Ответ

2 голосов
/ 19 мая 2011

Вам необходимо заключить в регулярное выражение $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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...