Я использую Файл: : Find :: Правило
для поиска исполняемых пользователем папок с одноуровневой глубиной в каталоге, указанном в $ dir
:
my @subDirs = File::Find::Rule->permissions(isExecutable => 1, user => "$uid")->
extras({ follow => 1, follow_skip => 2 })->
directory->
maxdepth(1)->
in( $dir );
Вот приблизительный эквивалент, использующий UNIX find
:
my $subDirStr = `find $dir -maxdepth 1 -type d -user $username -perm -100`;
chomp($subDirStr);
my @subDirs = split("\n", $subDirStr);
Оба они запускаются в сценариях, у которых есть разрешения на восстановление этих данных.
Если я запустил оператор find
в командной строке, результаты вернутся мгновенно.
Если я запустил любой из вышеупомянутых операторов через Perl-скрипт, результат займет несколько секунд. .
Что я могу сделать программно для повышения производительности любого из двух подходов Perl?