use strict; use warnings; use CPANPLUS::Backend; use File::Glob qw(bsd_glob); use File::Basename; use Data::Dumper; use Storable qw(nstore); use Getopt::Long qw(GetOptions); warn ">> started '$0'\n"; # parse commandline options my @spec = ( 'out_dumper=s', 'out_nstore=s', ); GetOptions(\my %a, @spec) or die ">> invalid option(s)"; # set defaults $a{out_dumper} //= 'build-cache-list.dumper.txt'; $a{out_nstore} //= 'build-cache-list.nstore.txt'; ### SUBROUTINES sub save_output { my ($data, $out_nstore, $out_dumper) = @_; if ($out_nstore) { warn ">> storing results via Storable to '$out_nstore'\n"; nstore($data, $out_nstore) or die ">> store failed";; } if ($out_dumper) { warn ">> storing results via Data::Dumper to '$out_nstore'\n"; open my $fh, ">", $out_dumper or die ">> open: $!"; print $fh Dumper($data) or die ">> print: $!"; close $fh or die ">> close: $!"; } } ### MAIN my $cb = CPANPLUS::Backend->new(); my $conf = $cb->configure_object(); my $base = $conf->get_conf('base'); warn ">> using base='$base'\n"; my $perl_ver = sprintf "%vd", $^V; my @dirs = map { basename($_) } grep { -d $_ } bsd_glob("$base/$perl_ver/build/*"); save_output(\@dirs, $a{out_nstore}, $a{out_dumper});