The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl

use strict;
use warnings;

use lib qw(lib ../lib);
use POE qw(Component::WWW::OhNoRobotCom::Search);

die "Usage: perl search.pl <term_to_search_XKCD_comics_for>\n"
    unless @ARGV;

my $Term = shift;

my $poco = POE::Component::WWW::OhNoRobotCom::Search->spawn;

POE::Session->create(
    package_states => [ main => [qw(_start results )] ],
);

$poe_kernel->run;

sub _start {
    $poco->search( {
            term     => $Term,
            comic_id => 56,
            event    => 'results',
        }
    );
}

sub results {
    my $in_ref = $_[ARG0];

    exists $in_ref->{error}
        and die "ZOMG! ERROR!: $in_ref->{error}";

    print "Results for XKCD comic search are as follows:\n";

    keys %{ $in_ref->{results} };
    while ( my ( $uri, $title ) = each %{ $in_ref->{results} } ) {
        print "$title [ $uri ]\n";
    }

    $poco->shutdown;
}