AnyEvent::Twitter::Streamは、イベントループ内でTwitterのStreamAPIからデータを受け取っています。下記のコードは、受け取ったデータのうち、ユーザー名とツイート内容を表示しています。
#!/usr/bin/perl use strict; use Config::Pit; use AnyEvent::Twitter::Stream; my $done = AnyEvent->condvar; my ($user, $password) = do { @{ Config::Pit::get( 'twitter.com', require => { 'username' => 'memememomo', })}{ qw/username password/ }; }; my ($method, $args) = @ARGV; my %args;if ($method eq 'follow') { $args{follow} = $args; $method = 'filter'; } elsif ($method eq 'track') { $args{track} = $args; $method = 'filter'; } binmode STDOUT, ":utf8"; my $streamer = AnyEvent::Twitter::Stream->new( username => $user, password => $password, method => $method || "sample", %args, on_tweet => sub { my $tweet = shift; print "$tweet->{user}{screen_name}: $tweet->{text}\n"; }, on_error => sub { my $error = shift; warn "ERROR: $error"; $done->send; }, on_eof => sub { $done->send; }, ); $done->recv;
$ perl test.pl track perl
という感じで実行します。
すると「perl」を含んだツイート内容がずらずらと出力されます。