Como ler vários arquivos em um diretório, combinando um padrão?

1

Eu tenho um diretório contendo 'x' no. de arquivos. Alguns arquivos contêm uma string "Pass" e outros com "Fail". Eu quero ler os dois arquivos e armazenar os arquivos de aprovação e falha separadamente em dois diretórios diferentes. Eu sou capaz de ler os arquivos, mas não pode coincidir com a string.

#!/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";
    }
}
    
por nani 02.06.2016 / 16:15

1 resposta

0

Existe um operador = ~ para corresponder uma string a um padrão. Isso parece funcionar para mim (acho que deveria ser foreach em vez de for):

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";
       }
    }
}
    
por Scooter 07.06.2016 / 16:35