Perl Advent Calendar 〜これを見ておけば年末も大丈夫!〜

はてブ数が多い順に並べて見ました。

はてブ 記事
63 STF分散オブジェクトストレージ - Perl Advent Calendar Japan 2011 Hacker Track
46 データ分散とインデックス最適化のためのハッシュ関数の利用 - Perl Advent Calendar Japan 2011 Hacker Track
39 Config::ENV - 環境変数で config を切替えるためのモジュール - Perl Advent Calendar Japan 2011 Hacker Track
32 Alien::RRDtool - RRDtoolをCPANから入れる - Perl Advent Calendar Japan 2011 Hacker Track
32 DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Perl Advent Calendar Japan 2011 Dbix Track
29 あるある ORM ドハマリ大辞典 - Perl Advent Calendar Japan 2011 Dbix Track
26 DBIx::Handlerで安心DB生活 - Perl Advent Calendar Japan 2011 Dbix Track
26 クライアントサイドJSでもサーバーサイドJSでもうごくテストを書く - Perl Advent Calendar Japan 2011 Amon2 Track
25 ぼくのかんがえた最強のテスト分類 - Perl Advent Calendar Japan 2011 Test Track
25 テストのためにデーモンを自動的に起動するやりかた2011年版 - Perl Advent Calendar Japan 2011 Test Track

スクリプト

use strict;
use warnings;
use Encode;
use LWP::UserAgent;
use URI::Escape;
use Web::Query;

my $ua = LWP::UserAgent->new;

my $url = 'http://perl-users.jp/articles/advent-calendar/2011/';
my @tracks = wq($url)->find('#alpha-inner h3 a')->attr('href');
for my $track (@tracks) {
    $track =~ s!^\./!!;
    $track = $url . $track;
    print "=> $track\n";
    wq($track)->find('#alpha-inner ul li a')->each(sub {
        my $title = decode_utf8($_->text);
        my $url = $_->attr('href');
        my $escaped_url = uri_escape($url);
        my $res = $ua->get("http://api.b.st-hatena.com/entry.count?url=$escaped_url");
        die $res->status_line unless $res->is_success;
        my $count = $res->content || 0;
        printf "%d [%s:title]\n", $count, $url;
    });
}

で、sort -nr | headした。