#!/usr/bin/perl -w
# guardian-filter -- filter the Guardian's RSS feed by keyword
use XML::RSSLite;
use XML::RSS;
use LWP::Simple;
use strict;
# list of keywords we want
my @keywords = qw(perl internet porn iraq bush);
# get the RSS
my $URL = 'http://www.guardian.co.uk/rss/1,,,00.xml';
my $content = get($URL);
# parse the RSS
my %result;
parseRSS(\%result, \$content);
# build the regex from keywords
my $re = join "|", @keywords;
$re = qr/\b(?:$re)\b/i;
# make new RSS feed
my $rss = XML::RSS->new(version => '0.91');
$rss->channel(title => $result{title},
link => $result{link},
description => $result{description});
foreach my $item (@{ $result{items} }) {
my $title = $item->{title};
$title =~ s{\s+}{ }; $title =~ s{^\s+}{ }; $title =~ s{\s+$}{ };
if ($title =~ /$re/) {
$rss->add_item(title => $title, link => $item->{link});
}
}
print $rss->as_string;