#!/usr/bin/perl # fetch the specified version of the Perl sourcecode use strict; use warnings; use JSON::PP; use LWP::Simple; use Data::Dumper; #use Devel::Comments; # uncomment this during development to enable the ### debugging statements my $version = shift or die "Specify a Perl version to download.\n"; my $download_url; if ($version =~ /^http:\/\//) { $download_url = $version; } else { $version =~ s/^\D+//; my $json = decode_json(get "http://search.cpan.org/api/dist/perl-$version"); ### $json if (!$json->{releases}) { print "Perl v$version not found.\n"; exit; } my $author = $json->{releases}[0]{cpanid}; my $firstone = substr($author, 0, 1); # first character my $firsttwo = substr($author, 0, 2); # first two characters my $filename = $json->{releases}[0]{archive}; $download_url = "http://search.cpan.org/CPAN/authors/id/$firstone/$firsttwo/$author/$filename"; #print $download_url; exit; } ### $download_url (my $filename = $download_url) =~ s#^.*/##; ### $filename #getstore($download_url, $filename); system "wget", $download_url; if ($filename =~ /\.tar\.gz$/) { system "tar", "-xvzf", $filename; unlink $filename; } elsif ($filename =~ /\.tar\.bz2$/) { system "tar", "-xvjf", $filename; unlink $filename; }