21 my @opt = <<'=back' =~ /B<--(\S+)>/g;
33 Minimum age in days of the target directory
34 (measured with C<-M>).
46 use lib
"$FindBin::Bin/../CPAN-Blame/lib";
49 use File
::Basename
qw(dirname);
50 use File
::Path
qw(mkpath);
55 use Hash
::Util
qw(lock_keys);
56 use CPAN
::Blame
::Config
::Cnntp
;
59 lock_keys
%Opt, map { /([^=|!]+)/ } @opt;
66 $Opt{minage
} //= 1440;
68 my $root = $CPAN::Blame
::Config
::Cnntp
::Config
->{ctgetreports_dir
} || die;
69 my $workdir = $CPAN::Blame
::Config
::Cnntp
::Config
->{solver_vardir
} || die;
70 $workdir =~ s
"$"/workdir/solved
";
71 opendir my $dh, $workdir or die;
73 DIRENT: for my $dirent (readdir $dh) {
74 # CPAN-Mini-Indexed-0.01_01.1.slv.LCK, CPAN-Mini-Indexed-0.03_01.2.slv, CPAN-Mini-Indexed-0.03_01.2.slvdv.gz, CPAN-Mini-Indexed-0.03_01.2.yml
75 my($stem) = $dirent =~ /(.+)(?:\.slv\.LCK|\.slv|\.slvdv.gz|\.yml)$/ or next;
76 next if $seen{$stem}++;
77 my $troot = sprintf "%s/%s/%s", $root, substr($stem,0,1), $stem;
78 my @trcand = grep { -e $_ } glob("$troot\
{,.tar
}");
79 # if (-e "$troot.tar
") {
81 my $trcand = scalar @trcand;
82 # warn " has
$trcand tarballs
or something
: @trcand\n";
86 my @cand = grep { -e $_ } glob("$workdir/$stem\
{.slv
.LCK
,.slv
,.slvdv
.gz
,.yml
}");
87 if (map { /[\*\?]/ } @cand) {
88 die "Illegal filename with
glob character discovered
: @cand";
91 my @ages = sort { $a <=> $b } map { -M $_ } @cand;
92 if ($ages[0] < $Opt{minage}) {
93 warn " is younger than
$Opt{minage
} days
($ages[0])\n";
96 warn " about to
unlink @cand\n";
97 unlink @cand or die "Could
not unlink: $!";
99 last if $Opt{max} && ++$i >= $Opt{max};
104 # cperl-indent-level: 4