use strict; use warnings; use utf8; use Net::Twitter; use XML::Feed; use URI::Fetch; use URI; use DateTime; my $SERIF = [ ["全力で", "を爆破せよ!"], ]; my $FRESH_PATH = "./update_time"; my $now = time; my $mtime = (stat($FRESH_PATH))[9]; if ($mtime) { utime $now, $now, $FRESH_PATH or die("$FRESH_PATH: $!"); } else { open my $fh, ">", $FRESH_PATH or die("$FRESH_PATH: $!"); close $fh; $mtime = (stat($FRESH_PATH))[9]; } my $mtime_dt = DateTime->from_epoch( epoch => $mtime ); # thx to bombtter ! my $rss_url = URI->new('http://twitter.com/statuses/user_timeline/14152694.rss'); my $res = URI::Fetch->fetch($rss_url) or die URI::Fetch->errstr; my $rss_content = $res->content; my $twitter = Net::Twitter->new(username=>'TwitterID', password=>'Password'); my $feed = XML::Feed->parse(\$rss_content) or die XML::Feed->errstr; for my $entry ($feed->entries) { my $entry_content = $entry->content->body; $entry_content =~ s/^bombtter:\s+//xms; $entry_content =~ s/\s*が爆発しました。\s*$//xms; my $bombee = $entry_content; my $serif = $SERIF->[rand() * scalar(@$SERIF)]; if(DateTime->compare($entry->issued, $mtime_dt) == 1) { $twitter->update( $serif->[0] . $bombee . $serif->[1] ); sleep 1; } else { last; } }