use strict; use warnings; use LWP::Simple; use LWP::UserAgent; use XML::LibXML; my $DIR = "C:\\Webroot\\rdf"; my $from = 'me'; my $to = 'me'; my $subject = "tweeting annoying"; my $ticket = qw(localhost/rss); my @news = ("localhost/rss", => "TestList",); chdir $DIR or die "Cannot chdir $DIR: $!"; my @output; while (@news >= 2) { my ($url, $localname) = splice @news, 0, 2; dbmopen my %SAW, $localname, 0644 or warn "Cannot open %SAW for $localname: $!"; my $feed = get($ticket); my $parser = XML::LibXML->new; my $doc = $parser->parse_string($feed); my %seen; my @item_output; for my $item($doc) { my $date = $doc->findvalue('rss/channel/item/pubDate'); my $desc = $doc->findvalue('rss/channel/item/description'); $seen{$date} = localtime; next if $SAW{$date}; push @item_output, $desc; } %SAW = %seen; if (@item_output) { push @output, @item_output; } } if (@output) { require Net::SMTP; my $smtp = Net::SMTP->new(Host => 'mailhost'); $smtp->mail( $from ); $smtp->to( $to ); $smtp->data(); $smtp->datasend("To: $to\n"); $smtp->datasend("From: $from\n"); $smtp->datasend("Subject: $subject\n"); $smtp->datasend("\n"); # done with header $smtp->datasend("@output\n"); $smtp->dataend(); $smtp->quit(); # all done. message sent. }