Захватывать строки после совпавшей линии в Perl - PullRequest
0 голосов
/ 29 июля 2011

Как получить доступ ко всем строкам после строки, на которой встречаются сопоставленные шаблоны Например

BCDA
ABCD
AAAABBBBCCCCDDD
AAAAAABBBBBBCCC
AAAAAAAAAAAAAA

Так что в основном после сопоставления с шаблоном ABCD я хочу обработать все строки после него. Поместить его в массив. Так сделать сопоставление с шаблоном только один раз.

Ответы [ 2 ]

4 голосов
/ 29 июля 2011

Это самый простой пример, который я могу придумать для того, что звучит так, как будто вы ищете. Он помещает «все строки после» строки, которая соответствует массиву.

my @lines;
while ( <$in> ) { 
    next unless m/ABCD/;
    # in an list context, this will slurp the rest of the file.
    @lines = <$in>;
}
3 голосов
/ 29 июля 2011

Немного неясно, но разве это то, что вам нужно?

Оператор диапазона идеально подходит для такого рода задач:

#!/usr/bin/perl

my @array;

while (<DATA>)  {
  push @array, $_ if /ABCD/ .. 0
}
shift(@array);

print @array;

__DATA__
BCDA
ABCD
AAAABBBBCCCCDDD
AAAAAABBBBBBCCC
AAAAAAAAAAAAAA

Выходы:

AAAABBBBCCCCDDD
AAAAAABBBBBBCCC
AAAAAAAAAAAAAA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...