yet another cpanf
I wrote cpanf command clone using metacpan API.
#!/usr/bin/env perl use strict; use warnings; use 5.008005; use JSON; use LWP::UserAgent; use Pod::Usage; our $VERSION = '0.01'; my $module = pop @ARGV || pod2usage(); # last one is module name my $ua = LWP::UserAgent->new(agent => "$0/$VERSION"); my $release = get_json("http://api.beta.metacpan.org/module/$module", 'distribution'); my $url = get_json("http://api.beta.metacpan.org/release/$release", 'download_url'); warn $url; system('cpanm', @ARGV, $url); sub get_json { my ($api_url, $key) = @_; my $res = $ua->get($api_url); die "$api_url: " . $res->status_line . "\n" . $res->content unless $res->is_success; my $dat = decode_json($res->content); $dat->{$key} || die "Invalid json: " . $res->content; }