use Time::HiRes qw( sleep ); my $interval = 3; my $min_sleep = 0; my $sleep_until = time; while (1) { work(); $sleep_until += $interval; my $now = time; my $sleep_for = $sleep_until - $now; if ($sleep_for < $min_sleep) { warn("Work took too long\n"); $sleep_for = $min_sleep; $sleep_until = $now + $sleep_for; } sleep($sleep_for) if $sleep_for; }
In reply to Re: Doing every X seconds
by ikegami
in thread Doing every X seconds
by dideod.yang
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |