2013-12-09 255 views
0

如果我想在這個文件中找到USER和PASS這兩個單詞的所有實例,然後把它們出現的次數分別放到兩個變量中,那我該怎麼做?謝謝!匹配模式:正則表達式 - perl

open MYFILE, '<', 'source_file.txt' or die $!; 
open OUTFILE, '>', 'Header.txt' or die $!; 

$user = 0; 
$pass = 0; 

while (<MYFILE>) { 
    chomp; 

    my @header = split (' ',$_); 
    print OUTFILE "$linenum: @header\n\n"; 

    if (/USER/ig) { 
     $user++; 
    } 

    if (/PASS/ig) { 
     $pass++; 
    } 
} 

上面是新的代碼,它的工作原理。 我將我的變量設置爲0,並在變量上使用++增量。 但是我仍然對擴展我的正則表達式能力的建議持開放態度? (如果有意義的話)

+2

您可以在每次看到其中一個字符串時遞增計數器嗎? –

+0

哇這麼簡單,但非常有效。非常感謝,它的工作! – user2288

回答

2

你可以簡單地做。

my $user = 0; 
my $pass = 0; 

while (<MYFILE>) { 
    chomp; 
    my @header = split ' ', $_; 
    print OUTFILE "$linenum: @header\n\n"; 

    $user++ if /user/ig; 
    $pass++ if /pass/ig; 
}