Это можно сделать несколькими способами, в зависимости от того, что вы хотите сделать.
Во-первых, вы можете выполнить поиск сценариев в каждой папке в своем начальном каталоге.Вы ничего не указываете в командной строке.
use File::Spec::Functions qw(catfile);
my @users = glob( '/Users/*' );
foreach my $user ( @users ) { # $user looks like /Users/Buster
my $calendar_dir = catfile( $user, 'Calendar', '#msgs' );
...
}
Вы также можете использовать opendir , чтобы получить список пользователей, чтобы вы возвращались по одному каталогу за раз:
opendir my $dh, '/Users' or die ...;
while( my $user = readdir $dh ) {
next if $user =~ /^\.\.?\z/; # and anything else you want to skip
... # do the cool stuff
}
Во-вторых, вы можете настроить поиск по выбранным папкам.Предположим, что вы находитесь в вашем домашнем каталоге.Чтобы уничтожить дубликаты для определенных пользователей, вы должны вызвать свой сценарий с именами этих пользователей:
dups.pl --killdups Buster Mimi Roscoe
Чтобы просмотреть всех пользователей, может быть что-то вроде этого (похоже, что вы работаете в MacOS X,но не совсем, поэтому я не уверен, какой путь вам нужен), используя глобус командной строки:
dups.pl --killdups /Users/*
Решение выглядит аналогично, но вы берете пользователей из @ARGV
вместо использованияglob:
foreach my $user ( @ARGV ) {
...
}
Этого должно быть достаточно, чтобы начать работу.Вы должны будете интегрировать это с остальной частью вашего сценария и исправить пути в каждом случае, чтобы это было то, что вам нужно, но это всего лишь простое манипулирование строками (или даже проще, чем с File :: Spec .