2013-12-09 2 views
0

Если я хочу найти в этом файле все экземпляры слов USER и PASS, а затем поместить количество раз, которое они появляются в две переменные, соответственно, как бы я это сделал? Благодаря!Соответствие шаблону: regex - 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; 
} 
Смежные вопросы