use HTML::TreeBuilder; use LWP::Simple; use Data::Dumper; print Dumper( do { my %pod; push @{ $pod{ substr $_->[1], 4, -5 } }, "http://perldoc.com/perl$_->[0]/$_->[1]" for map { my $v = $_; map { [ $v, $_->attr('href') ], } HTML::TreeBuilder -> new -> parse( get "http://perldoc.com/perl$v/pod.html" ) -> look_down( _tag => 'a', sub { shift->attr('href') =~ /^pod/ } ) } reverse sort map { $_->attr('value') } HTML::TreeBuilder -> new -> parse( get 'http://perldoc.com/' ) -> look_down( name => 'version' ) -> content_list; \%pod; } );