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