#!/usr/bin/perl
use strict;
use warnings;
my @month_name =
qw/ january february march april may june july august september /;
my $month = {};
for ( 0 .. $#month_name ) {
$month_name[$_] =~ s/(\w{3})(\w*)/$1(?:$2)?/;
$month->{qr/$month_name[$_]/} = $_ + 1;
}
sub month_to_num {
my $date = shift;
for ( keys %$month ) {
last if $date =~ s/$_/$month->{$_}/;
}
return $date;
}
printf "%02s %02d %4d\n", split /\s+/, month_to_num($_)
for (
'dec 7 2008',
'may 25 2003',
'march 01 1897'
);
# Output:
# dec 07 2008
# 05 25 2003
# 03 01 1897
hth,
PooLpi