use Time::Local; use POSIX qw/ strftime /; my $today = '10/24/2000'; my $days_ago = 1; my $yesterday = do { my($m,$d,$y) = split( m'/' => $today ); # I use 12 as the hour here, so there's no # confusion about daylight savings. my $t = timelocal( 0, 0, 12, $d, $m - 1, $y - 1900 ); $t -= $days_ago * 24*60*60 ; strftime( '%m/%d/%Y' => localtime($t) ); }; print "$today $yesterday";