in reply to What is the best way to run periodic tasks (once per minute)?

Corion is correct. A modification that I have had to make on several occasions allows for more time intensive tasks is this:

while (1) { $waketime = time + $sleep_duration; &do_complex_things; sleep($waketime-time); }


Something else that you might want to look into is the Time::HiRes module.

Replies are listed 'Best First'.
Re: Answer: What is the best way to run periodic tasks (once per minute)?
by flyingmoose (Priest) on Feb 03, 2004 at 00:25 UTC
    A more Unix-y way to do this would be to use the alarm function. See 'perldoc -f alarm' for details.
    #!/usr/bin/perl use strict; my $interval = 60; # seconds between calls + # sub will be called every $interval seconds my $process = sub { print "processing!\n" }; + # engage the alarm system $SIG{ALRM} = sub { &$process; alarm $interval; }; + alarm $interval; + # function will be called every 60 seconds for rest of program...

    Another alternative would be to upgrade the program to use POE events. This would be the route I would take. The alarm demo is more for historical interest and fiddling than for anything else.