はてブのリンク切れチェック

use utf8;
use strict;
use warnings;

use WWW::Mechanize;
my $ua = WWW::Mechanize->new();
my $url = 'http://b.hatena.ne.jp/youraccount/?with_favorites=1&of='; # ここを書き換えてね!
my $count = 80;
open ( OUT, '>link.txt' );
while ( 1 ) {
	my $sub_url = $url.$count;
	$ua->get($sub_url);
	my @all_link = $ua->find_all_links();
	my @out_link = grep { !($_->url =~ /hatena.ne.jp/) } grep { $_->url() =~ /^http/ } @all_link;
	@out_link or last;
	print $ua->uri();
	print "\n";
	foreach my $link ( @out_link ) {
		my $res = $ua->get($link);
		my $code = $res->code();
		$ua->back();
		if ( $code != 200 ) {
			print OUT $ua->uri();
			print OUT "\n";
			print OUT $res->code();
			print OUT "\n";
			print OUT $link->url();
			print OUT "\n";
			print OUT "\n";
		}
	}
	$count += 20;
}
close ( OUT );

ブクマをひとつずつ調べて、リンク切れしてないかどうかをチェックする。
200以外のステータスを返してきたURLをリストアップして、link.txtを作ってそこに書き込むと言う動作をします。
ちなみに、238/4600が無効リンクでした。