Как я могу найти определенную строку в файле без использования регулярных выражений в Perl? - PullRequest
2 голосов
/ 03 февраля 2009

У меня есть файл, который я хочу прочитать, используя модуль File :: Slurp , а затем найдите в этом файле определенную строку. Я знаю, что в Perl есть регулярные выражения, но строки, которые я ищу, генерируются пользователями, поэтому не нужно беспокоиться о том, чтобы избежать всего. Я мог бы написать цикл foreach, чтобы сделать это, но мне было интересно, есть ли в Perl функция, которая сделает это для меня? Все, что я вижу в Интернете о поиске текста в Perl, использует регулярные выражения.

Ответы [ 3 ]

17 голосов
/ 03 февраля 2009

Вы можете просто использовать регулярное выражение. Вам не нужно беспокоиться о том, чтобы избежать всего, Perl имеет для этого функцию quotemeta (или, альтернативно, "\ Q \ E").

2 голосов
/ 04 февраля 2009

Как это?

use List::Util qw<first>;

my $line 
    = first { index( $_, $something_users_are_looking_for ) > -1 } 
      <$file>
    ;

И если ты хочешь их всех.

my @lines
    = grep { index( $_, $something_users_are_looking_for ) > -1 } 
      <$file>
    ;
0 голосов
/ 03 февраля 2009

Можете ли вы просто использовать строковый литерал, используя q ()?

print(q(This string can contain regex: (\n\t*\n)(\n)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...