Как прочитать строку после нахождения шаблона? - PullRequest
0 голосов
/ 17 января 2011

У меня есть строки

CHANNEL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN)
id=3

Что я хочу сделать, это получить идентификатор после того, как я выполнил поиск по файлу и нашел первую строку.

open(CHECKFILE8, "$file");
while (<CHECKFILE8>) {             #while loop to loop through each line in the file
    chomp;                         #take out each line by line
    $datavalue = $_;               #store into var , $datavalue.
    $datavalue =~ s/^\s+//;        #Remove multiple spaces and change to 1 space from the front
    $datavalue =~ s/\s+$//;        #Remove multiple spaces and change to 1 space from the back
    $datavalue =~ s/[ \t]+/ /g;    #remove multiple "tabs" and replace with 1 space
    if ($datavalue eq "CHANNEL(SYSTEM.DEF.SVRCONN) CHLTYPE(SVRCONN)") {
        # HOW TO READ THE NEXT LINE?
    }
}

1 Ответ

1 голос
/ 17 января 2011

Так же, как вы читаете все остальные строки: с выражением <CHECKFILE8>. Например:

my $nextline = <CHECKFILE8>;

Однако вы должны знать, что открытие файловых дескрипторов с помощью идентификатора пустого слова является несколько устаревшим Perl. Как правило, безопаснее и идиоматичнее позволить Perl создавать дескрипторы файлов в переменных с лексической областью:

open my $checkfile8, '<', $file or die "Can't open $file: $!";
while (<$checkfile8>) { ... }

Вы используете use strict, верно?

...