現在時刻をマイクロ秒(μs)まで取得する #perl
検証テストをする際、秒以下の単位(ミリ秒、マイクロ秒、)を取得したい、ということがありました。
perl標準モジュールでできないか調べた結果、以下のコードでマイクロ秒まで取得ができる。。。はず。
コード
#!/usr/bin/perl use strict; use warnings; use Time::HiRes qw/ gettimeofday /; my ($epocsec, $microsec) = gettimeofday(); my ($sec,$min,$hour) = localtime($epocsec); printf("%02d:%02d:%02d.%d\n",$hour,$min,$sec,$microsec);
内容
Time::Hiresのgettimeofdayは、エポック秒(UNIX時間)とマイクロ秒2つの要素の配列を返してくれます。
取得したエポックス秒はlocaltime関数でOSのローカル時刻に変換し、マイクロ秒と共に出力させてます。
これで、マイクロ秒まで取得できているはず。
※Time::Hiresはperl5.7.3〜の標準モジュールなので、以降のバージョンならperl-coreに含まれているかと思います。
実行結果
$ date;perl ./msec.pl 2012年 12月  4日 火曜日 00:26:55 JST 00:26:55.539758 $
因みに下記の参考サイトでは、標準モジュールTime::Pieceを用いてposix表記でミリ秒を取得できるような記載がありますが、試した環境ではできませんでした。OSの設定によるのだろうか。。。(実行した環境はAIX7、CentOS6、SLES10。いずれもperl5.10.1)
参考サイト
Time::Piece -日付と時刻を扱う - サンプルコードによるPerl入門 -
http://d.hatena.ne.jp/perlcodesample/20091105/1246274997