while (1) { my $loop_start = time; #.... code my $sleep_time = 86400 - (time - $loop_start); sleep ($sleep_time); }