Я преобразование Линукса скрипта http://www.perlmonks.org/index.pl?node_id=217166 конкретно это:Почему я не могу удалить этот пустой каталог в Perl?
#!/usr/bin/perl -w
use strict;
use Getopt::Std;
use File::Find;
@ARGV > 0 and getopts('a:', \my %opt) or die << "USAGE";
# Deletes any old files from the directory tree(s) given and
# removes empty directories en passant.
usage: $0 [-a maxage] directory [directory ...]
-a maximum age in days, default is 120
USAGE
my $max_age_days = $opt{a} || 120;
find({
wanted => sub { unlink if -f $_ and -M _ > $max_age_days },
postprocess => sub { rmdir $File::Find::dir },
}, @ARGV);
моя попытка:
#!/usr/bin/perl -w
use strict;
use Getopt::Std;
use File::Find;
@ARGV > 0 and getopts('a:', \my %opt) or die << "USAGE";
# Deletes any old files from the directory tree(s) given and
# removes empty directories en passant.
usage: $0 [-a maxage] directory [directory ...]
-a maximum age in days, default is 120
USAGE
my $max_age_days = $opt{a} || 120;
find({
wanted => sub { unlink if -f $_ and -M _ > $max_age_days },
# postprocess => sub { rmdir $File::Find::dir },
postprocess => sub {
my $expr = "$File::Find::dir";
$expr =~ s/\//\\/g; # replace/with \
print "rmdir $expr\n";
`rmdir $expr`;
},
}, @ARGV);
Однако я получаю сообщение об ошибке, когда скрипт пытается удалить каталог говоря, что каталог находится в использование другим процессом (когда это не так). Есть идеи? Я запускаю сценарий на 64-разрядной версии Windows Server 2003 с пакетом обновления 2 (SP2) с помощью ActiveState 5.10.
Спасибо!
Чтобы добавить к этому: проблема здесь в том, что в Linux можно удалить файлы и каталогов, которые используются, на окнах никто не может. Вот почему он не работает без изменений. – 2008-12-08 17:07:57