找到模式后如何读取线?

时间:2011-01-17 07:40:48

标签: perl next

我有线

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

我想要做的是在搜索文件并找到第一行后检索id。

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 个答案:

答案 0 :(得分:1)

与阅读所有其他行的方式相同:使用表达式<CHECKFILE8>。例如:

my $nextline = <CHECKFILE8>;

但是,您应该知道,通过裸字标识符打开文件句柄有点过时了Perl。让Perl在词法范围变量中为您创建文件句柄通常更安全,更惯用:

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

您正在使用use strict,对吧?