Как прочитать несколько файлов в каталоге путем сопоставления с шаблоном?
У меня есть каталог, содержащий "х" нет. файлов. Некоторые файлы содержат строку "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 ответ
Существует оператор =~ для сопоставления строки с шаблоном. Кажется, это работает для меня (я думаю, что это должно быть 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";
}
}
}