The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
# search modules on search.cpan.org and extract name, description and author

use strict;
use warnings;
use URI;
use Web::Scraper;
use YAML;

my $query = shift || "Foo";
my $uri   = URI->new("http://search.cpan.org/search");
$uri->query_form(query => $query, mode => 'all');

my $scraper = scraper {
    process "body#cpansearch>p", 'modules[]' => scraper {
        process "//a[1]", name => 'TEXT', url => '@href';
        process "small", description => 'TEXT';
        process "span.date", date => 'TEXT';
        process q{//a[starts-with(@href, '/~')][2]}, author => 'TEXT';
    };
};

warn Dump $scraper->scrape($uri);