my @dates = qw| 10/13/2006 1/13/2006 10/1/2006 1/1/2006 |; foreach my $date (@dates) { if ($date =~ m|^(\d{1,2}) / (\d{1,2}) / (\d{4})$|x) { ## <-- anchoring $date = sprintf "%02d/%02d/%04d", $1, $2, $3; } print "result: <$date>\n"; } __END__ result: <10/13/2006> result: <01/13/2006> result: <10/01/2006> result: <01/01/2006>