memcachedの統計情報をCSVファイルに出力する

get_hits,get_misses等を時刻とともにCSVファイルに出力するコードを下に記述しました。
タスクスケジューラやcronで定期的に実行することで統計情報の推移を調べることができます。

#!c:/perl/bin/perl

use Cache::Memcached;

my $server;
my $port;
my $server_port;

my $stats;
my $hosts;
my $host;
my $server_port;
my $misc; 
my $get_hits; 
my $get_misses; 
my $get_hits_ratio;
my $get_misses_ratio;

my $filename;
my @ltime;
my $date;
my $date_without_slash;
my $time;

$server = "localhost";
$port = "11211";
$server_port = "$server" . ":" . "$port";
print '$server_port = ' . "$server_port" . "\n";
$memd = new Cache::Memcached {
    'servers' => [ $server_port ],
};

$stats = $memd->stats([qw(misc)]);
$hosts = $stats->{hosts};
$host = $hosts->{"$server_port"};
$misc = $host->{misc}; 



$get_hits = $misc->{get_hits}; 
$get_misses = $misc->{get_misses}; 
if (($get_hits + $get_misses) == 0) {
    $get_hits_ratio = 0;
    $get_misses_ratio = 0;
} else {
    $get_hits_ratio = $get_hits/($get_hits + $get_misses);
    $get_misses_ratio = $get_misses/($get_hits + $get_misses);
}
$bytes = $misc->{bytes};

@ltime=localtime(time);
$date = sprintf("%04d/%02d/%02d", $ltime[5] + 1900, $ltime[4] + 1, $ltime[3]);
$date_without_slash = sprintf("%04d%02d%02d", $ltime[5] + 1900, $ltime[4] + 1, $ltime[3]);
$time = sprintf("%02d:%02d:%02d", $ltime[2], $ltime[1], $ltime[0]);

$filename = "memcachestats" . $date_without_slash . ".csv";
unless (-e $filename) {
    open(OUT, ">$filename");
    print OUT "time";
    print OUT ",";
    print OUT "get_hits";
    print OUT ",";
    print OUT "get_misses";
    print OUT ",";
    print OUT "get_hits_ratio";
    print OUT ",";
    print OUT "get_misses_ratio";
    print OUT ",";
    print OUT "bytes";
    print OUT "\n";
    close(OUT);
} 
open(OUT, ">>$filename");
print OUT $date;
print OUT " ";
print OUT $time;
print OUT ",";
print OUT $get_hits;
print OUT ",";
print OUT $get_misses;
print OUT ",";
print OUT $get_hits_ratio;
print OUT ",";
print OUT $get_misses_ratio;
print OUT ",";
print OUT $bytes;
print OUT "\n";
close(OUT);