Я использую next if $file eq '.' $file eq '..';
, чтобы найти файл в каталоге и подкаталоге (за исключением нескольких каталогов) и открыть файлы для поиска и замены. Но когда у меня есть точка в имени папки, она рассматривает папку как файл и говорит, что ее невозможно открыть. Я отфильтровал файлы с помощью -f, но он отсутствовал, чтобы показать файлы в основной папке.Найти файлы в папке и вложенной папке
Есть ли какой-нибудь рекурсивный способ найти папку и файлы, даже если у нее есть точка.
opendir my $dh, $folder or die "can't open the directory: $!";
while (defined(my $file = readdir($dh))) {
chomp $file;
next if $file eq '.' $file eq '..';
{
if ($file ne 'fp') {
print "$folder\\$file";
if ($file =~ m/(.[^\.]*)\.([^.]+$)/) {
...
}
}
}
}
ли вы забыли '' || (или) в 'следующем, если $ файла эк '' $ file eq '..'; '? Это должно быть 'next if ($ file eq '.' || $ file eq '..');' (хотя это не решает проблему рекурсии). – PerlDuck
'chomp $ file;' не используется. Результаты от 'readdir' не имеют завершающей новой строки. – shawnhcorey