2013-12-09 89 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; 
}