use strict; use warnings; my $str = shift @ARGV; my %months = ( 'Jan' => '01', 'Feb' => '02', 'Mar' => '03', 'Apr' => '04', 'May' => '05', 'Jun' => '06', 'Jul' => '07', 'Aug' => '08', 'Sep' => '09', 'Oct' => '10', 'Nov' => '11', 'Dec' => '12' ); my ($year,$month,$day) = (substr ($str,-2,2,""),substr($str,-3,3,""),$str); my $modstr = join '-',($months{$month},length $day == 1 ? '0'.$day : $day, '20'.$year); print $modstr."\n"; # Run it!: # perl date_convert.pl 16May07 # 05-16-2007 # perl date_convert.pl 4Dec03 # 12-04-2003