in reply to Fast date parsing

In the following, $time is the date in seconds since the UNIX epoch. I'm converting it back to a string (in the print statement) for testing purposes.

use Time::Local; %MONTHS_LOOKUP = ( Jan => 0, Feb => 1, Mar => 2, Apr => 3, #... ); my $date = 'Apr 29 13:54:10'; $date =~ /^(.{3}) (.{2}) (.{2}):(.{2}):(.{2})$/ or die("Bad date\n"); my $time = timelocal($5, $4, $3, $2, $MONTHS_LOOKUP{$1}, 2005); print(scalar(localtime($time)), "\n");

The following variation might be faster, because it doesn't check the validity of the inputs:

use Time::Local qw( timelocal_nocheck ); %MONTHS_LOOKUP = ( Jan => 0, Feb => 1, Mar => 2, Apr => 3, #... ); my $date = 'Apr 29 13:54:10'; $date =~ /^(.{3}) (.{2}) (.{2}):(.{2}):(.{2})$/ or die("Bad date\n"); my $time = timelocal_nocheck($5, $4, $3, $2, $MONTHS_LOOKUP{$1}, 2005); print(scalar(localtime($time)), "\n");