Я хочу найти файл, который не содержит конкретной строки?
Перечисленный файл похож на ниже
../../../experiment/fileA.txt (contain word 'Book')
../../../experiment/fileB.txt (contain word 'Book')
../../../experiment/fileC.txt (do not contain word 'Book')
../../../experiment/fileD.txt (contain word 'Book')
Вот мой код
use strict;
use warning;
my $dirname = "../../../experiment/";
my $keyword = "Book";
my @result;
my $find_file = sub {
my $F = $File::Find::name;
if ($F =~ /txt$/) {
open my $in, "<", $F or die $!;
while(<$in>) {
if (/\Q$keyword\E/){
next;
}else{
push @result, $F;
return;
}
}
}
};
find ({ wanted => $find_file, no_chdir=>1}, $dirname );
foreach my $result (@result){
chomp $result;
$result =~ s{.*/}{};
print "$result\n";
}
Но, похоже, не работает. Он отображает весь файл, имеет ли он ключевое слово $ или нет. Я хочу, чтобы он отображался только в том случае, если в файле отсутствует ключевое слово $