Составление полного списка файлов заданной папки на Perl

Пример скрипта на Perl, который:

1) осуществляет рекурсивное сканирование содержимого заданной папки;
2) сохраняет результаты сканирования (список файлов) в файл.

#!/usr/local/bin/perl

# (c) 2007, mikhail@turenko.net

use strict;

# имя папки для сканирования по умолчанию (. = текущая папка)
my $dir = ".";

# берем имя папки, если задано аргументом командной строки
$dir = $ARGV[0] if defined $ARGV[0];

# вызов процедуры сканирования содержимого папки
my @list = scan_dir ( $dir );

# вызов процедуры сохранения массива в файл
&save_list ( @list );

# --------------------------------------------------------------------
sub scan_dir
# процедура рекурсивного сканирования папки
{

    my ($dir) = @_;
    my @list;
    for my $file (glob($dir.'/*'))
    {

      push @list, $file; # добавляем в массив 1 элемент
      if (-d $file) # если файл является папкой
      {

        my @sub = scan_dir($file);
        push @list, @sub;

      }

    }
    return @list;

}

# --------------------------------------------------------------------
sub save_list
# процедура сохранения списка в файл
{

    my (@list) = @_;
    open(F, '>file_list.txt');
    print F join("\n", @list) . "\n";
    close(F);

}

# --------------------------------------------------------------------
__END__

· Добавьте на news2.ru

Похожие записи:


Прокомментируйте