end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転します

perlで日付&時刻な文字列解析は Date::Parse > Date::Manip かな

これまでは、Date::Parse を使っていましたが、 Spreadsheet::WriteExcel::Utility のsrcを読んで、偶然、Date::Manip の存在を初めて知りました。

Date::Parse http://search.cpan.org/perldoc?Date::Manip
Date::Manip http://search.cpan.org/perldoc?Date::Parse
http://search.cpan.org/perldoc?Spreadsheet::WriteExcel::Utility

で、試しにapacheのログを日付&時刻をparseさせたら、Date::Manip はできない?
Date_Init() が必要なのかな?
まっ、あまり考えす、これまで通り、Date::Parse を使います。

#!/usr/local/bin/perl
use strict;
use Date::Manip qw(ParseDate Date_Init);
use Date::Parse;
use Data::Dumper;

main();

sub main {
    my $org_date_str = '04/Dec/2011:04:04:25 +0900';
    print "Date::Manip is below ...\n";
    print Dumper( Date::Manip::ParseDate($org_date_str) );
    print "Date::Parse is below ...\n";
    print Dumper( Date::Parse::strptime($org_date_str) );
}

実行結果

[endo@colinux tmp]$ ./foo.pl 
Date::Manip is below...
$VAR1 = '';
Date::Parse is below...
$VAR1 = '25';
$VAR2 = '04';
$VAR3 = '04';
$VAR4 = '04';
$VAR5 = '11';
$VAR6 = 111;
$VAR7 = 32400;