#! perl use strict; use warnings; use constant { DELAY => 10, EXPIRY => 3600, MARGIN => 300, }; my $time = time; my $expiry = $time + EXPIRY; while ($time + MARGIN < $expiry) { my $previoustime = $time; warn $time; sleep DELAY + $previoustime - $time unless $time - $previoustime >= DELAY; $time = time; } #### 16:17 >perl 1453_SoPW.pl 1447741073 at 1453_SoPW.pl line 18. 1447741083 at 1453_SoPW.pl line 18. 1447741093 at 1453_SoPW.pl line 18. 1447741103 at 1453_SoPW.pl line 18. 1447741113 at 1453_SoPW.pl line 18. ... #### ( $time - $previoustime >= 10 or sleep (10 + $previoustime - $time) )