#!/usr/bin/perl use strict; use warnings; use Encode qw(decode); use HTTP::Request; use LWP::UserAgent; use XML::RAI; my $ua = 'LWP::UserAgent'->new; my $rss = shift @ARGV; binmode STDOUT, ":utf8"; open STDERR, '>', 'in.err'; open STDOUT, '>', 'out.log'; my $request = 'HTTP::Request'->new( 'GET', $rss ); print "Requesting...\n"; my $response = $ua->request($request); print ' Status: ', $response->status_line, "\n"; print ' Last modified: ', $response->header('last-modified'), "\n"; print ' Etag: ', $response->header('etag'), "\n\n"; my $response_content = decode( 'UTF-8', $response->content ); my $rai = 'XML::RAI'->parse_string( $response->content ); my $channel = $rai->channel; print "Channel:\n"; print ' Title: ' . $channel->title . "\n"; print ' Link: ' . $channel->link . "\n"; print ' Modified: ' . $channel->modified . "\n"; foreach $_ ( @{ $rai->items; } ) { print STDOUT "Item:\n"; print STDOUT ' Title: ' . $_->title . "\n"; print STDOUT ' Link: ' . $_->link . "\n"; print STDOUT ' Description: ' . $_->description . "\n"; print STDOUT ' Created: ' . $_->created . "\n"; print STDOUT "------------------------------------------------\n\n"; } $request->header( 'If-Modified-Since', $response->header('last-modified') ); $request->header( 'If-None-Match', $response->header('etag') ); close STDERR; close STDOUT;