2009-03-05 6 views
6

私は2つの大きなログファイルを実行しています。タイムスタンプを比較したいと思います。Perlで時間計算を処理する最良の方法は何ですか?

私は既に対応するログステートメントを見つけるためにPerlスクリプトを書いていますが、タイムスタンプの違いを見つける必要があります。

例えば

、15:31:19.430888マイナス15:31:19.427763

Perlで時間を扱うための任意の良い構築物はありますか?私がそれを避けることができれば、自分自身で時間計算を扱いたくはありません。

+0

Pythonを学ぶのに苦労しますか? annakata

+1

http://articles.techrepublic.com.com/5100-10878_11-6132371.html – grieve

答えて

13

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オブジェクトを提供します。

+0

defaul perl libにこのような構造がありますか? CPANにはありませんか? – Alex

+0

@windfinder:私はそこにいるとは思わない。 Perlにはかなり限定されたデフォルトライブラリが付属しています。 – Powerlord

+0

wordfinder、あなたが以下を見なかった場合、Time :: Pieceは最新のPerlのコアライブラリにあります。私はそれが一般的に何かを使用するのに十分な理由だとは思わないが、Time :: Pieceはかなり良い。 – skiphoppy

5

減算を含む日付の計算を行うときに、負の負の演算子ではなく、subtract_datetime_absoluteメソッドを使用することを忘れないでください。これは2つのdatetimesのうちの "ストップウォッチの持続時間"を得る唯一の方法であり、ストップウォッチの持続時間はそれまで私がしている計算の種類のために有用であった。 DateTime :: Durationインターフェイスは混乱し、誤解を招きます。特に、ストップウォッチの持続時間があると思われ、そうでないと思われる場合は、誤解を招きます。

People mentioned early on how confusing this was going to beしかし、決して修正されませんでした。

Time :: Pieceモジュールは優れた選択肢です。全体的にはDateTimeほど有用ではないと言わざるを得ないが、この種の混乱を避けることは間違いない。私はDateTimeを好むが、ほんのわずかだ。

+2

Time :: Pieceには、「コアモジュールがほしい」という人のために5.10が付属しています。通常は間違った欲望ですが、私はそれを言いたいと思いました。 – Schwern

関連する問題