匹配模式:正则表达式 - perl

时间:2013-12-09 04:06:22

标签: regex perl split while-loop

如果我想在此文件中找到USER和PASS字样的所有实例,然后将它们出现的次数分别放入两个变量中,我该如何处理?谢谢!

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并在变量上使用++ incrementor。 但我仍然愿意接受有关扩展我的正则表达能力的建议吗? (如果这是有道理的)

1 个答案:

答案 0 :(得分: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;
}