На работе запонадобилось накачать модулей используя их канонические имена вида 'Foo::Bar'. Лазить на cpan и вручную качать, понятное дело, неправильно. К тому же, часть модулей содержалась в дистрибутиве других модулей, как например, Catalyst находится в составе Catalyst::Runtime.
Конечной моей задачей был скрипт, которому я на вход даю имя модуля, а он мне на выходе отдаёт ссылку на скачивание данного модуля с cpan.
Недолгое гугление вывело меня на модуль MetaCPAN::Client, который позволяет работать с metacpan через API.
В итоге, для скачивания модуля имеем такой код:
Конечной моей задачей был скрипт, которому я на вход даю имя модуля, а он мне на выходе отдаёт ссылку на скачивание данного модуля с cpan.
Недолгое гугление вывело меня на модуль MetaCPAN::Client, который позволяет работать с metacpan через API.
В итоге, для скачивания модуля имеем такой код:
#!/usr/bin/env perl
use 5.014;
use strict;
use warnings;
use MetaCPAN::Client;
my $module_name = $ARGV[0] or die "Can't get module name";
my $mclient = MetaCPAN::Client->new;
my $module = $mclient->module( $module_name );
say $mclient->release( $module->distribution )->download_url;
Проверяем:
% perl load_module.pl List::Util https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Scalar-List-Utils-1.42.tar.gzЧто и требовалось.
Комментариев нет:
Отправить комментарий