use DateTime::Format::x509; my $f = DateTime::Format::x509->new(); my $dt = $f->parse_datetime('Mar 11 03:05:34 2013 UTC'); #### my $dtparser = DateTime::Format::x509->new(); #### $line =~ /^\<\d+\>\w+\s+\d+:\d+:\d+\s+\w+:TIMESTAMP\=\w+\s+(\w+\s+\d+\s+\d+:\d+:\d+\s+\d+).*MSGCLS.*$/m; $datestr = $1; # I use your regex but with day-name removed from bracket, e.g. Oct 5 04:08:28 2018 my $dtobj = $dtparser->parse_datetime($datestr); my $epoch = $dtobj->epoch(); push @lines, [$line, $epoch]; # Line AND epoch saved into the array, maybe dtobj too for completeness #### @sortedlines = sort { $a->[1] <=> $b->[1] } @lines;