Speravo Module::ScanDeps che fornisce l'utilità della riga di comando scandeps.pl sarebbe utile qui, ma, con mio grande sgomento, Module::ScanDeps
è a quanto pare non destinato a tale scopo particolare per quanto scandeps.pl
o ignora i moduli mancanti o (con -c
o -x
) gracchia quando il lo script utilizza un modulo che non è installato.
Ecco uno script Perl quick'n'dirty che cerca di eseguire lo script utilizzando do fino a quando non riesce:
#!/usr/bin/perl
use strict;
use warnings;
use Term::Prompt;
my ($script) = @ARGV;
die "Provide script file name on the command line\n"
unless defined $script;
until (do $script) {
my $ex = [email protected];
if (my ($file) = $ex =~ /^Can't locate (.+?) in/) {
my $module = $file;
$module =~ s/\.(\w+)$//;
$module = join('::', split '/', $module);
print "Attempting to install '$module' via cpan\n";
system(cpan => $module);
last unless prompt(y => 'Try Again?', '', 'n');
}
else {
die $ex;
}
}
Se non si desidera che lo script da eseguire, è possibile eseguire perl -c $script
, cattura stderr
emettere quello e analizzare per i messaggi di modulo mancanti e chiamare cpan
per ogni modulo trovato fino a perl -c $script
uscite "Sintassi OK". Questo ti dà anche un ciclo più pulito. Lo vedrò più tardi.
Si potrebbero perdere le dipendenze caricate in fase di esecuzione utilizzando questa tecnica.
fonte
2009-08-20 11:02:33
Sembra promettente – Nifle