# Keep the lookup table in highest scope necessary to avoid create/destroy each time needed my %lookup = ( Jan => 0, Feb => 1, ... ); #Assume unpack is faster than regex (Benchmark.pm to be sure) # Add code to handle year appropriately my ($mon, $day, $hr, $min, $sec) = unpack('A3xA2xA2xA2xA2', $date); $mon = $lookup{$mon}; my $stamp = timelocal( ... );