страница perldoc на CPAN.pm чертовски смущает меня.
Да, документации по CPAN API все еще немного не хватает. Не все были на самом деле предназначены для программного использования другими. Возможно, вам повезет больше с CPANPLUS , если он вам доступен.
Моя программа должна загрузить пару модулей, если они еще не существуют. Это в основном просто: CPAN :: Shell-> install ("Module :: Name :: Here");
Да, это в значительной степени самое простое. Фактически, это почти все, что делает программа командной строки cpan, когда вы набираете «cpan Module :: Name :: Here». Однако вам необходимо предварительно настроить CPAN.pm.
Это загружает пакет, разархивирует и устанавливает его?
Да, все три.
Я хотел бы убедиться, что он не пытается переустановить что-либо, если пакет уже существует - это поведение функции по умолчанию или нет?
Да, поведение по умолчанию - ничего не устанавливать, если модуль обновлен. Вы можете проверить это сами с помощью метода "uptodate ()", например так:
my $mod = CPAN::Shell->expand("Module", "Module::Name::Here");
$mod->install unless $mod->uptodate;
И как я могу узнать, не может ли Perl подключиться к CPAN для получения пакета?
Это сложно сделать программным способом, который было бы просто объяснить. Вам либо нужно посмотреть на вывод, либо просто проверить $ mod-> uptodate впоследствии;
my $mod = CPAN::Shell->expand("Module", "Module::Name::Here");
if ( ! $mod->uptodate ) {
$mod->install;
die "Problems installing" unless $mod->uptodate;
}
Удачи!