Иногда нет возможности воспользоваться CPAN, или же необходимо получить дистрибутив, содержащий необходимые модули без обращения к сети.
#!/usr/bin/env perl
use strict;
use warnings;
use CPAN::FindDependencies;
my $done = {};
my $list = {};
foreach my $module ( @ARGV ) {
my @dependencies = CPAN::FindDependencies::finddeps( $module );
foreach my $dep ( @dependencies ) {
# we don't want to install perl core modules
next if $dep->distribution() =~ m/perl-/;
# skip if already processed
next if exists $done->{ $dep->name() };
push @{ $list->{ $dep->depth } }, $dep->name();
$done->{ $dep->name() } = 1;
}
}
my @keys = reverse sort keys %$list;
foreach my $key ( @keys ) {
foreach my $module ( @{ $list->{ $key } } ) {
print $module, "\n";
}
}
Войти с помощью OpenID