use Time::Local; ($day,$mon,$year,$hours,$min,$sec) = split /[- :]/,"27-Jun-2001 12:08:19.17"; print "$day,$mon,$year,$hours,$min,$sec\n"; $time = timelocal($sec,$min,$hours,$day,$mon,$year); print "$time\n"; print scalar localtime $time; #### #!/usr/bin/perl -w use strict; use Time::Local; my ($day,$mon,$year,$hours,$min,$sec) = split /[- :]/,"27-Jun-2001 12:08:19.50"; my $start = timelocal($sec,$min,$hours,$day,$mon,$year); # here is a shorter way using an array for our time elements my @time = split /[- :]/,"27-Jun-2001 12:08:21.50"; my $finish = timelocal(@time[5,4,3,0,1,2]); # iterate over our data while () { next if m/^\s*$/; # split the line into fields my @data = split /\s/, $_; # generate our time array my @time = split /[- :]/, "$data[0] $data[1]"; # convert to epoch time my $time = timelocal(@time[5,4,3,0,1,2]); # print the first three fields if in range if ($time > $start and $time < $finish) { print "$data[0] $data[1] $data[2]\n"; } } __DATA__ 27-Jun-2001 12:08:19.17 SendSMReq:T:1069 D:19203311338 O:Voice Mail MWI P:0x20 C:0xe0 V:07-05 12:08 <20> 27-Jun-2001 12:08:19.36 SendSMCnf:AbsSub:1068 27-Jun-2001 12:08:19.56 SubmitInd:T:0 D:19207024720 O:19202928411 P:0x0 C:0x0 V:09-11 12:08 27-Jun-2001 12:08:20.05 SubmitInd:T:0 D:19207137406 O:19203314700 P:0x0 C:0x0 V:06-28 12:08 27-Jun-2001 12:08:20.30 SendSMReq:T:1070 D:16083089587 O:16083089560 P:0x20 C:0x0 V:07-05 11:02 27-Jun-2001 12:08:20.31 SubmitRsp:0 27-Jun-2001 12:08:20.32 SubmitRsp:0 27-Jun-2001 12:08:21.62 SendSMCnf:StatOK:1065 27-Jun-2001 12:08:22.36 SendSMCnf:StatOK:1060 27-Jun-2001 12:08:22.56 SendSMCnf:StatOK:1063