Как прочитать несколько файлов в каталоге путем сопоставления с шаблоном?

У меня есть каталог, содержащий «х» нет. файлов. Некоторые файлы содержат строку «Pass», а другие - «Fail». Я хочу прочитать оба файла и сохранить файлы pass и fail отдельно в двух разных каталогах. Я могу читать файлы, но не могу сопоставить строку.

#!/usr/bin/perl

use strict;
use warnings;

use Path::Class;

my $src = dir("/home/Narayanan/Cov_script/logs/");
my $pattern = "TEST IS PASSED";
my $i = 0;
my @log_files = grep /[.] log\z/x, $src->children;

for my $log_file ( @log_files ) {
    my $in = $log_file->openr;
    while (my $line = <$in>) {
    my $string = $line; 
#| `grep  { $line eq $pattern } `

        print "OUT: $string";
    }
}
1
задан 3 June 2016 в 03:15

1 ответ

Существует = ~ оператор для соответствия строке к шаблону. Это, кажется, работает на меня (я думаю, что это должно быть foreach вместо для):

foreach my $log_file ( @log_files ) {
    my $in = $log_file->openr;
    while (my $line = <$in>) {
       my $string = $line; 
       if ($line =~ /$pattern/)
       {
         #| `grep  { $line eq $pattern } `
           print "OUT: $string";
       }
    }
}
0
ответ дан 3 June 2016 в 03:15

Другие вопросы по тегам:

Похожие вопросы: