use Time::Local; use POSIX qw(strftime); my ($Y, $M, $D) = unpack "A4 A2 A2", $date; $M--; my $newdate = strftime('%Y-%m-%d', gmtime timegm(0, 0, 0, $D, $M, $Y));