my @months = (qw(jan feb mar apr may jun jul aug sep oct nov dec)); my $i = 1; my %month_num = map { $_ => sprintf '%02d', $i++ } @months; my $month_re = join "|", @months; $month =~ s/($month_re)\w*/$month_num{$1} || "$1"/ei;