Xferlogのログパーサがあった件について

仕事中にPerlApacheのaccess.logのログパーサを使っている最中にふと
「そういえばXferlogのログパーサはないもんかね」と思い立ち、
仕事中のリフレッシュも兼ねて検索したらやっぱりあった。
早速試してみようということで、portsからインストールしよう……と思っていたが、

# make search name=XferLog
#

ない。仕方が無いからcpanを使ってモジュールをインストールすることにした。
可能な限りperlモジュールもportsからインストールしておきたかったのだけど……無いんじゃあなあ。
ちなみにCPANのサイトに載っている情報によると、
どうやらログから分割した要素をhashに入れるようになっているらしい。
試しにうちのサーバを利用している人がどれくらいDLしていっているかを計算してみた。

#!/usr/bin/perl

use strict;
use Net::FTPServer::XferLog;

my $XFERLOG = '/var/log/xferlog';
my $totalsize = 0;
my $size_for_calc = 0;
my $hashref;

open LOG, "$XFERLOG" or die "System Error: $!\n";

while(<LOG>) {
    $hashref = Net::FTPServer::XferLog->parse_line($_);
    foreach my $column (@Net::FTPServer::XferLog::field) {
        if ($column eq 'file_size') {
            $size_for_calc = $hashref->{$column};
        }
        if ($column eq 'dierction' && $hashref->{$column} eq 'o') {
            $totalsize += $size_for_calc;
            $size_for_calc = 0;
        }
    }
}

close LOG;
print "TOTAL SIZE: $totalsize\n";

exit 0;

こんな感じ。