У меня есть скрипт, который заполняет имена файлов и время последнего изменения соответствующего файла в определенном каталоге. Я использовал модуль DosGlob для указания регулярного выражения.Perl DosGlob не работает после первой оценки
структура каталогов Образец:
//share16/ABC/X/Output/1/
//share16/ABC/X/Output/2/
//share16/ABC/Y/Output/1/
//share16/ABC/Y/Output/2/
Ниже приведен код, который делает выше и дополнительно код после этого, который выходит из настоящего контекста.
use File::DosGlob 'glob';
my @dir_regex = glob "//share16/ABC/*/Output/";
for my $dir (@dir_regex) {
find({ wanted => \&process_file, no_chdir => 1 }, $dir) or die $!;
}
sub process_file {
my $dummy = $_;
if (-f $dummy) {
my $filename = "//share16/TOOLS/report.txt";
open(my $fh, '>>', $filename)
or die "Could not open file '$filename' $!";
my $last_mod_time = ctime(stat($dummy)->mtime);
print $fh "$last_mod_time $dummy\n";
}
close $fh;
}
Сценарий успешно не перечисляет вниз файлы под все папки (папки 1, папка 2) под первой директории X, но не сразу, когда он начинает читать папке Y.
Ошибка: Нет такого файла или каталог в \ share16 \ traverse4.pl строка 5.
Я не знаю, почему он терпит неудачу, поскольку я пробовал hardcoding имя_папки в dir_regex, но он все еще не удается после перечисления файлов в первом каталоге.
Если вы обновили информацию, пожалуйста, внесите ее в свой вопрос. – Sobrique
Сделано! Спасибо Sobrique за указание –