use POSIX qw( strftime ); use Time::Local qw( timegm ); my ($d,$m,$y) = (localtime())[3,4,5]; print(strftime("%Y_%m_%d\n", gmtime(timegm(0,0,0,$d,$m,$y) - 24*60*60) ));