То, что я пытаюсь сделать, это заставить мою программу рекурсивно проходить через каталог и для всех этих файлов в каталоге искать в каждом файле слово «ОШИБКА», а затем распечатывать его экземпляр в отдельном файле. Я смог сделать это, не делая его рекурсивным, то есть просто вводя, какие файлы проверять вручную в cmd. Мне было интересно, как правильно использовать ARGV при рекурсии. Вот мой код до сих пор:
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
my $dir = "c:/programs";
find(\&searchForErrors, $dir);
sub searchForErrors()
{
my $seen = 0;
if (-f){
my $file = $_;
my @errors = ();
open FILE, $file;
my @lines = <FILE>;
close FILE;
for my $line (@lines){
if (/ERROR/ ){
push(@errors, "ERROR in line $.\n");
print FILE "ERROR in line $.:$1\n" if (/Error\s+(.+)/);
}
open FILE, ">$file";
print FILE @lines;
close FILE;
}
}
}
Что мне нужно знать, так это то, как я могу включить ARGV, чтобы программа читала каждый файл в каталоге, выполняла поиск, а затем выводила результаты поиска в файл. Надеюсь, я адекватно объяснил свой вопрос, если вам нужны какие-либо разъяснения, дайте мне знать, что сбивает с толку. Чем больше объяснений вы можете дать с ответом, тем лучше. Благодарю вас!