Embed URL


SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

Install all favorited distributions

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/env perl
use strict;
use warnings;
use 5.010;
use Mojo::UserAgent;
my $url = shift @ARGV or die "Usage: $0 metacpan_author_url";
my $ua = Mojo::UserAgent->new;
my $dom = $ua->get($url)->res->dom;
my @modules = $dom->find('td.release a')->pluck('text')->each;
for my $module (@modules) {
$module =~ s/-/::/g;
qx/cpanm $module/;
1 2 3 4 5
# and another solution proposed from Stephen Thirlwall (sdt) (see comment below)
cpan_favorites() {
perl -Mojo -E "g('$1')->dom('td.release a')->pluck('text')->each(sub{s/-/::/g;say})"

DDP was added for debugging only and is not really needed

Oh nice - thanks for this!

I saw this post and thought it might be better to just feed the favorites list into cpanm, rather than uploading something onto cpan.

Here's a one-line version you can stick in your .bashrc:

install_cpan_favorites() {
  perl -Mojo -E "s/-/::/g and qx(cpanm \$_) for g('$1')->dom('td.release a')->pluck('text')->each";

usage: install_cpan_favorites $username

(somewhat inspired by this thread:!topic/mojolicious/iTVzzjX5pPQ)

I think I prefer this which just lists them out, and then feed that into xargs cpanm or whatever:

cpan_favorites() {
  perl -Mojo -E "g('$1')->dom('td.release a')->pluck('text')->each(sub{s/-/::/g;say})"

That is really nice and I've already added it into my .bashrc :) I think also that the seconds version where you can pipe the output to cpanm is preferable. Thanks for the follow u and sharing it


Thanks @dolmen. Just saw the tweet and was checking it out ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.