#!/usr/local/bin/perl -w use strict; use Time::Local; my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); my $i = 0; my %months = map { $_ => $i++ } @months; my $date = '30Nov00'; # for example my ($d, $m, $y) = unpack('A2A3A2', $date); $m = $months{$m}; # Nasty hack because of the 2 digit year # Adjust cutoff to taste $y += 100 if $y < 50; my $when = timelocal(0, 0, 12, $d, $m, $y); $when += 86_400; # bug fixed here. thanks chipmunk ($d, $m, $y) = (localtime($when))[3 .. 5]; printf '%02d%s%02d', $d, $months[$m], $y % 100;