#!/usr/bin/perl -w # $Id: install-all 625 2017-01-09 01:41:46Z stro $ use strict; use warnings; use IPC::Run3; opendir my $DIR, $ENV{'HOME'} . '/perl' or die 'Cannot read perl directory'; my @perls = sort grep { m/^\d/ } readdir $DIR; closedir $DIR; my @res; foreach my $perl (@perls) { my $dzil = $ENV{'HOME'} . "/perl/$perl/bin/dzil"; my $cpan = $ENV{'HOME'} . "/perl/$perl/bin/cpan"; if (-e $dzil) { print 'Using Dist::Zilla in Perl ', $perl, $/; my (@list, @list2); run3([$dzil, 'listdeps', '--missing'], \undef, \@list); run3([$dzil, 'authordeps', '--missing'], \undef, \@list2); push @list, @list2; foreach my $item (@list) { chomp $item; } if (scalar @list) { my $rv = system($cpan, @list); push @res, { 'perl' => $perl, 'res' => $rv ? 'error: ' . $rv : 'installed' }; } else { push @res, { 'perl' => $perl, 'res' => 'ok' }; } } else { print 'No Dist::Zilla installed in Perl ', $perl, $/; push @res, { 'perl' => $perl, 'res' => 'no dzil' }; } } foreach my $res (@res) { print $res->{'perl'}, "\t", $res->{'res'}, $/; }