Как эффективно удалить длинный список / массив файлов и каталогов в Perl - PullRequest
3 голосов
/ 08 июня 2011

Вот так я рекурсивно в настоящее время удаляю файлы и каталоги

foreach my $row(keys %$rows)
{
    my $md5 = $rows->{$row}->{'md5'};
    my $path = "/some/path/jpg/".substr( $md5, 0, 3 )."/$md5";

    `rm -rf $path`;
    print "removed - ".$path."\n";
}

Существуют сотни тысяч файлов / каталогов, которые необходимо удалить, поэтому я хотел бы найти лучшее решение, кроме вызова "rm -rf" для каждого файла / директории.

Может быть, объединить список файлов / каталогов в массиве и затем передать этот массив в один вызов "rm -rf"?

1 Ответ

10 голосов
/ 08 июня 2011

Использовать rmtree из Файл :: Путь . Помимо переносимости, он использует встроенную в Perl unlink вместо того, чтобы запускать целую оболочку каждый раз, когда вам нужно удалить каталог, что вы и делаете сейчас.

...