Задача:
Необходимо получить имена всех файлов каталога в массив @files.
Решение:
Откроем каталог функцией opendir и последовательно считаем имена файлов функцией readdir:
my $dir = '/home/dir_name';
my @files;
opendir(DIR, $dir) or die "can't opendir $dir: $!";
while (defined(my $file = readdir(DIR))) {
next if $file =~ /^\.\.?$/;
push @files, $file;
}
closedir(DIR);
Функция readdir также возвращает специальные каталоги "." (текущий каталог) и ".." (родительский каталог), которые нужно пропустить с помощью регулярного выражения.
Результат:
Массив вида ('1.jpg', '2.txt', '3.pl').