Вы можете упростить код чтения каталога, используя такой модуль, как File :: Util .Он или другой подобный модуль обеспечит несколько удобств: проверка ошибок;отфильтровывать нежелательное содержимое каталога (например, подкаталоги .
и ..
);выбор содержимого по типу (например, просто файлы или каталоги);и прикрепление корневого пути к содержимому.
use strict;
use warnings;
use File::Util qw();
my $dir = 'folder/details';
my $file_util = File::Util->new;
my @files = $file_util->list_dir($dir, qw(--with-paths --no-fsdots --files-only));
for my $f (@files){
local @ARGV = ($f);
print while <>;
print "\n";
}
Если вы предпочитаете избегать использования других модулей, вы можете получить имена файлов, например:
opendir(my $dh, $dir) or die $!;
my @files = grep -f, map("$dir/$_", readdir $dh);