#!/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 ; __END__ 99-99/99 99.99.9999 9999.99-99