これまでは、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;