emacsでperl書く環境もやっと整ってきたことだし、リハビリがてらにコードを書いてみる。お題はtwitter関係の。
ここのrubyのコードをほぼぱくってみますた。
で、followersがあんまり多いと時間がやたらかかるので@onoue50のやつを調べてみた。@ma_shimaroをfollowするんだ、@onoue50!!
結果とコードはこんな感じ。
ma_shimaro is 5 negaton is 4 muzie is 4 VoQn is 4 ryo_grid is 4 Hamachiya2 is 4 takesako is 3 otsune is 3 _tad_ is 3 pianocktail is 3 ONa is 3 mrkn is 3 redribabarn is 3 kmizu is 3 daftbeats is 3 f_iryo1 is 3 yanbe is 3
#!/usr/bin/perl use strict; use warnings; use XML::LibXML; use Data::Dumper; use LWP::Simple; sub getFollowers() { my $username = shift; my $path = "/home/yasuhisa/svn/public/perl/friends"; my $file = "$path/$username.xml"; unless ( -e $file ) { my $content = get("http://twitter.com/statuses/friends/$username.xml"); open( FILE, "> $file" ) or die $!; print FILE $content; close(FILE); } my $parser = XML::LibXML->new; my $dom = $parser->parse_file($file) or die; my @names = $dom->getElementsByTagName("screen_name"); my @friends = (); foreach (@names) { push( @friends, $_->firstChild->data ); } return @friends; } my $user = "onoue50"; my %hash; my @friends = &getFollowers($user); foreach my $friend (@friends) { my @of = &getFollowers($friend); foreach my $elem (@of) { $hash{$elem} += 1; } } foreach(@friends){ delete($hash{$_}); } delete($hash{$user}); foreach(sort {$hash{$b} cmp $hash{$a}} keys %hash){ print "$_ is $hash{$_}\n" if $hash{$_} >3; }