my %datehash; @datehash{ qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) } = map sprintf( '%02d', $_), 1 .. 12; my $mon_re = join '|', keys %datehash; while ( ) { my ( $mon, $day, $year) = /($mon_re)\s+(\d\d?)\s+(\d{4})/; $day = sprintf '%02d', $day; print "$year$datehash{ $mon}$day\n"; } __DATA__ Oct 16 2004 11:09:19:943AM Mar 3 2007 10:30:31:170PM