#!/usr/bin/perl use strict; use warnings; use POE; use POE::Component::AtomAggregator; my @feeds = ( # { # url => "http://xantus.vox.com/library/posts/atom.xml", # name => "xantus", # delay => 600, # }, { url => "http://www.vox.com/explore/posts/atom.xml", name => "vox", delay => 10, }, ); POE::Session->create( inline_states => { _start => \&init_session, handle_feed => \&handle_feed, }, ); $poe_kernel->run(); sub init_session { my ( $kernel, $heap, $session ) = @_[ KERNEL, HEAP, SESSION ]; $heap->{atomagg} = POE::Component::AtomAggregator->new( alias => 'atomagg', debug => 1, callback => $session->postback("handle_feed"), tmpdir => '/tmp', # optional caching ); $kernel->post( 'atomagg', 'add_feed', $_ ) for @feeds; } sub handle_feed { my ( $kernel, $feed ) = ( $_[KERNEL], $_[ARG1]->[0] ); for my $entry ( $feed->late_breaking_news ) { print "entry: $entry\n"; # do stuff with the XML::Atom::Headline object print $entry->title . "\n"; } }