use Time::Local qw( timelocal ); my %month_num_by_name = ( JAN => 1, FEB => 2, ... ); my ($d, $m, $y) = split(/-/, $date); $m = $month_num_by_name{$m}; my $time = timelocal(0, 0, 0, $d, $m-1, $y);