in reply to Generating a format template for a date
Output:#!/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%sYY +YY', '(\d{4})([-\/.])(\d{1,2})\2(\d{1,2})' => 'YYYY%sMM%s +DD' ); sub ChooseDateFmt($) { my $datestr = shift or die; for my $p (keys %Pattern) { return sprintf($Pattern{$p}, $2, $2) if $datestr =~ /^\s*$p\ +s*$/; } } while (<DATA>) { chomp; print "Date\t$_\tFormat=" . ChooseDateFmt($_) . "\n"; } __DATA__ 10/15/2006 2006/11/01 11/01/06 2006.11.01 11-01-06
Date 10/15/2006 Format=MM/DD/YYYY Date 2006/11/01 Format=YYYY/MM/DD Date 11/01/06 Format=MM/DD/RR Date 2006.11.01 Format=YYYY.MM.DD Date 11-01-06 Format=MM-DD-RR
|
|---|