Indeed I have the impression too that there must be some simple, neat way to do it, but I tried a pair of approaches and the problem turns out to be more elusive than one may think at first sight. All in all the following is a solution (of course it misses error handling for non sensible input, but that's an aside), but I know in advance it has very few chances of being any neater than what you may have thought of yourself
#!/usr/bin/perl -l use strict; use warnings; { my %df = ( '99/99/99' => [qw|DD / MM / RR|], '99/99/9999' => [qw|DD / MM / YYYY|], '9999/99/99' => [qw|YYYY / MM / DD|], ); sub dateformat { my @in=split /(9+)/, shift; shift @in; my @out=@{ $df{join '/', @in[0,2,4]} }; @out[1,3]=@in[1,3]; join '', @out; } } chomp, print dateformat $_ while <DATA>; __END__ 99-99/99 99.99.9999 9999.99-99
In reply to Re: Generating a format template for a date
by blazar
in thread Generating a format template for a date
by bart
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |