2009-03-05 29 views
6

Tôi đang chạy qua hai tệp nhật ký lớn và tôi muốn so sánh dấu thời gian.Cách tốt nhất để đối phó với toán học thời gian trong Perl là gì?

Tôi đã viết kịch bản Perl để tìm các câu lệnh nhật ký phù hợp, nhưng tôi cần tìm sự khác biệt trong dấu thời gian.

Ví dụ, 15: 31: 19,430888 trừ 15: 31: 19,427763

Có bất kỳ cấu trúc tốt để đối phó với thời gian trong Perl? Tôi không muốn đối phó với thời gian toán học bản thân mình nếu tôi có thể tránh nó.

+0

Hãy dành nó để học Python? annakata

+1

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

Trả lời

13

Bạn có thể sử dụng mô-đun DateTime CPAN.

ví dụ:

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; 

sẽ cung cấp cho bạn đối tượng DateTime::Duration để truy xuất kết quả.

+0

Có cấu trúc nào như vậy trong lib lib defaul không? Không phải trong CPAN? – Alex

+0

@windfinder: Tôi không tin rằng có. Perl đi kèm với một tập hợp các thư viện mặc định khá hạn chế. – Powerlord

+0

wordfinder, trong trường hợp bạn không thấy bên dưới, Time :: Piece nằm trong libs lõi trong Perl mới nhất. Tôi không nghĩ rằng đó là một lý do đủ tốt để sử dụng một cái gì đó, nói chung, nhưng Thời gian :: Mảnh là khá tốt. – skiphoppy

5

DateTime là tốt nhất, nhưng chỉ khi bạn nhớ sử dụng phương thức subtract_datetime_absolute thay vì toán tử trừ chồng quá tải khi bạn thực hiện bất kỳ phép tính ngày nào liên quan đến phép trừ. Đây là cách duy nhất để có được một "thời gian đồng hồ bấm giờ" trong hai thời gian biểu, và chỉ có thời gian đồng hồ bấm giờ đã từng hữu ích cho các loại số học ngày tôi làm. Giao diện DateTime :: Duration gây nhầm lẫn và gây nhầm lẫn, đặc biệt khi bạn nghĩ rằng bạn có thời lượng đồng hồ bấm giờ và bạn không có.

People mentioned early on how confusing this was going to be nhưng chưa bao giờ sửa chữa.

Thời gian :: Mô-đun mảnh tạo sự thay thế tốt đẹp. Tôi phải nói rằng tổng thể nó không hữu ích như DateTime, nhưng nó chắc chắn tránh được sự nhầm lẫn này. Tôi thích DateTime, nhưng chỉ vừa đủ.

+2

Thời gian :: Mảnh cũng đi kèm với 5,10 cho "Tôi chỉ muốn các mô-đun lõi" đám đông. Thường là một ham muốn sai lầm, nhưng tôi nghĩ tôi sẽ đề cập đến nó. – Schwern

Các vấn đề liên quan