twubbleみたいなものを作りました。

規約もないのにID, PASSを入れるなんて……。と思ったのが運の尽き。ちょっと作ってみました。
ブクマページで心配してる人は、いないみたい。私のような心配性な方はどうぞ。
インスパイア元の本家Twubbleはhttp://www.crazybob.org/twubble/です。
twitterのIDとPASSを設定して実行すると「friendがfriendしてる人」の“friendにされてる数”, “screen_name“を返します。

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use XML::DOM;

my $username = "YOUR_ID";
my $password = "YOUR_PASSWORD";

my $url = "http://twitter.com";
my $ua = LWP::UserAgent->new();
$ua->credentials(
	"twitter.com:80",
	"Twitter API",
	$username,
	$password
);

my $res = $ua->get($url."/statuses/friends_timeline.xml");

my $parser = new XML::DOM::Parser;
my $doc = $parser->parse($res->content);
my @users = getUsers($doc);
my %hash;

foreach my $user (@users){
	$res = $ua->get(
		$url."/statuses/friends_timeline/".${$user}{'id'}.".xml"
	);
	my @firends_of_user = getUsers(
		$parser->parse($res->content)
	);
	foreach my $uid (@firends_of_user){
		$hash{${$uid}{'sname'}}++;
	}
}

while (my($friend_id, $count) = each %hash) {
	print "$count, $friend_id\n";
}

sub getUsers {
	my $doc = shift;
	my @users;
	foreach ($doc->getElementsByTagName('user')){
		my %hash;
		my ($id) = $_->getElementsByTagName('id');
		my ($sname) = $_->getElementsByTagName('screen_name');
		$hash{'id'} = $id->getFirstChild->getNodeValue;
		$hash{'sname'} = $sname->getFirstChild->getNodeValue;
		push @users, \%hash;
	}
	return @users;
}