#!/usr/bin/perl use strict; use warnings; my %Pattern = ( '(\d{1,2})([-\/.])(\d{1,2})\2(\d{2})' => 'MM%sDD%sRR', '(\d{1,2})([-\/.])(\d{1,2})\2(\d{4})' => 'MM%sDD%sYYYY', '(\d{4})([-\/.])(\d{1,2})\2(\d{1,2})' => 'YYYY%sMM%sDD' ); sub ChooseDateFmt($) { my $datestr = shift or die; for my $p (keys %Pattern) { return sprintf($Pattern{$p}, $2, $2) if $datestr =~ /^\s*$p\s*$/; } } while () { chomp; print "Date\t$_\tFormat=" . ChooseDateFmt($_) . "\n"; } __DATA__ 10/15/2006 2006/11/01 11/01/06 2006.11.01 11-01-06