Как эффективно удалить длинный список/массив файлов и dirs в perl

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

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";
}

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

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

1 ответ

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

licensed under cc by-sa 3.0 with attribution.