2011-01-17 9 views
0

Ich habe die Linien bekommtWie wird die Zeile gelesen, nachdem ein Muster gefunden wurde?

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

Was will ich die id tun abzurufen ist, nachdem ich eine Suche auf der Datei zu tun und fand die erste Zeile.

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? 
    } 
} 

Antwort

1

Auf die gleiche Weise Sie alle anderen Zeilen lesen: <CHECKFILE8> mit dem Ausdruck. Zum Beispiel:

my $nextline = <CHECKFILE8>; 

Sie sollten sich bewusst sein, aber, dass Dateihandies über eine Bareword Kennung öffnen Perl etwas veraltet ist. Es ist im Allgemeinen sicherer und idiomatische zu lassen Perl Dateihandies in lexikalische Variablen für Sie erstellen:

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

Sie use strict verwenden, nicht wahr?

+0

sry dun bekommen Sie? Wie kann Perl "mein $ nextline = " wissen. ist die nächste Zeile? – Dayzza

+0

ok denke, ich habe es nach dem Ausprobieren! Danke Sean! : D – Dayzza