Если вы абсолютно уверены, что дата ВСЕГДА будет в этом формате, вы можете просто использовать регулярные выражения для ее переформатирования.Единственное, что у вас должен быть способ конвертировать месяц в число.Таким образом, вам не нужно загружать какие-либо дополнительные модули для преобразования даты:
my $date = "Thu Mar 06 02:59:39 +0000 2008"; #Original String
#Create the Month Hash (you might want all twelve months).
my %monthHash (Jan => "01", Feb => 2, Mar => 3);
# Use RegEx Matching to parse your date.
# \S+ means one or more non-spaces
# \s+ means one or more spaces
# Parentheses save that part of the string in $1, $2, $3, etc.
$date =~ m/\S+\s+(\S+)\s+(\S+)\s+(\S+)\s+\S+\s(.*)/;
my $monthString = $1;
my $day = $2;
my $time = $3;
my $year = $4;
# Convert Month string to a number.
my $month = $monthHash{$monthString};
#Reformat the string
$fmtDate="$year-$month-$day" . "T" . "$time" . "Z";
В противном случае я собирался сказать, что вы также можете попробовать DateTime :: Format :: Strptime, но Крис Чарли победил меня.