This is a remarkably simple trick which I've found very handy. With a few lines of Perl you can take any RSS feed and format it to your liking.
Get the Feed
You can do this using LWP::Simple:
- use LWP::Simple;
- my $feed_url = 'http://feeds.bbci.co.uk/news/rss.xml';
- my $feed = get($feed_url)
- or die ("Failed to fetch feed.");
Process the Raw Result
Using XML::RSS, convert the raw feed into a more manageable hash.
- use XML::RSS;
- my $rss = XML::RSS->new();
- $rss->parse($feed);
Format to Your Liking
Template::Toolkit can take in a template and a hash reference of values to substitute into the template.
- # Define a template
- my $template = <<"TEMPLATE";
- [% channel.title %]
- Headlines:
- [% FOREACH item = items %]
- [% item.pubDate %]\t[% item.title %]
- [% END %]
- TEMPLATE
This simple template will take the BBC news feed from above and print out a list of headlines with publication dates.
Putting it All Together
- #!/usr/bin/perl
- use strict;
- use warnings;
- use XML::RSS;
- use LWP::Simple;
- use Template;
- ##################
- # Configuration:
- #
- ##################
- my $feed_url = 'http://feeds.bbci.co.uk/news/rss.xml';
- my $template = <<"TEMPLATE";
- [% channel.title %]
- Headlines:
- [% FOREACH item = items %]
- [% item.pubDate %]\t[% item.title %]
- [% END %]
- TEMPLATE
- ##################
- ##################
- my $tt = Template->new()
- or die ("Failed to load template: $Template::ERROR\n");
- my $feed = get($feed_url)
- or die ('Failed to fetch feed.');
- my $rss = XML::RSS->new();
- $rss->parse($feed);
- $tt->process ( \$template, $rss )
- or die $tt->error();
- rob@arrakis:~/public_html/rss-reader$ perl rss-reader.pl
- BBC News - Home
- Headlines:
- Fri, 14 Sep 2012 12:15:22 GMT Kate privacy invasion 'grotesque'
- Fri, 14 Sep 2012 11:49:10 GMT US missions on film protest alert
- Fri, 14 Sep 2012 12:25:25 GMT Alps attack girl returning to UK
- Fri, 14 Sep 2012 10:17:03 GMT Woman is held after car body find
In this example the RSS feed and template are defined in code but they can just as easily be defined in files or a database allowing for changes/additions without deploying new code.

LTD Social Sitings
Note: Watch for social icons on posts by your favorite authors to follow their postings on these and other social sites.