my ($hour) = (localtime)[2]; $hour > 10 ? $_=0 : $_=60*60*24; # seconds in the day my ($mday,$mon,$year) = (localtime(time-$_))[3..5]; my $dir = sprintf('something/something/%04d/%02d/%02d',$year+1900,$mon,$mday);