我正在运行两个大日志文件,我想比较时间戳。在Perl中处理时间数学的最佳方法是什么?
我已经写了一个Perl脚本来查找匹配的日志语句,但我需要找到时间戳中的差异。
例如,15:31:19.430888零下15:31:19.427763
是否存在与时间在Perl处理任何好的结构?如果我可以避免,我不想自己处理数学问题。
我正在运行两个大日志文件,我想比较时间戳。在Perl中处理时间数学的最佳方法是什么?
我已经写了一个Perl脚本来查找匹配的日志语句,但我需要找到时间戳中的差异。
例如,15:31:19.430888零下15:31:19.427763
是否存在与时间在Perl处理任何好的结构?如果我可以避免,我不想自己处理数学问题。
您可以使用DateTime CPAN模块。
例如。
my $dt = DateTime->new(
year => 2009,
hour => 15,
minute => 31,
second => 19,
nanosecond => 430888
);
my $dt2 = DateTime->new(
year => 2009,
hour => 15,
minute => 31,
second => 19,
nanosecond => 427763
);
my $duration = $dt - $dt2;
这将给你一个DateTime::Duration对象来检索结果。
有没有在defaul的Perl的lib任何这样的结构?不在CPAN中? – Alex 2009-03-05 17:28:52
日期时间是最好的,但只有当你还记得你做的任何日期的数学包含减号,而不是使用重载负操作的subtract_datetime_absolute方法。这是从两个日期时间中获得“秒表持续时间”的唯一方法,并且只有秒表持续时间对于我所做的日期算术有用。 DateTime :: Duration界面令人困惑和误导,特别是当你认为你有秒表持续时间,而你没有。
People mentioned early on how confusing this was going to be但它从未纠正。
Time :: Piece模块是一个不错的选择。我不得不说它总体上不如DateTime那么有用,但它绝对避免了这种混淆。我更喜欢DateTime,但几乎没有。
花费它学习Python? –
annakata
2009-03-05 16:31:37
http://articles.techrepublic.com.com/5100-10878_11-6132371.html – grieve 2009-03-05 16:36:00