2009-03-05 4 views
6

두 개의 큰 로그 파일을 실행 중이며 타임 스탬프를 비교하려고합니다.Perl에서 시간 계산을 처리하는 가장 좋은 방법은 무엇입니까?

필자는 이미 일치하는 로그 문을 찾기 위해 Perl 스크립트를 작성했지만 타임 스탬프의 차이점을 찾아야합니다.

예를 들어

, 15 : 31 : 19.430888 마이너스 15 : 31 : 19.427763

펄 시간을 다루는 좋은 구조가 있습니까? 내가 그것을 피할 수 있으면 스스로 시간 계산을 다루고 싶지 않다.

+0

파이썬을 배우는 데 지출합니까? 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 메서드를 사용하는 것을 잊지 않는 경우에만 DateTime이 가장 좋습니다. 이것은 두 개의 datetimes 중에서 "스톱워치 지속 시간"을 얻는 유일한 방법이며, 스톱워치 지속 시간 만이 내가 수행 한 산술 연산에 유용했습니다. DateTime :: Duration 인터페이스는 혼란스럽고 오해의 소지가 있습니다. 특히 스톱워치 기간이 있다고 생각할 때 그렇습니다.

People mentioned early on how confusing this was going to be 그러나 결코 수정되지 않았습니다.

Time :: Piece 모듈은 멋진 대안을 제시합니다. 전반적으로 DateTime만큼 유용하지는 않지만 이런 종류의 혼란은 피할 수 있습니다. 나는 DateTime을 선호하지만 간신히.

+2

Time :: Piece는 "I want only core modules"군중을 위해 5.10도 제공됩니다. 대개는 잘못된 생각이지만, 나는 그것을 언급 할 것이라고 생각했습니다. – Schwern

관련 문제