On Saturday 20 May 2006 23:13, SkyBlueshoes wrote:
> I have a script that uses an infinite loop, I'm wanting to be able to
> set a timer that when expired will run a subroutine, something sort of
> like Poe's callback timer feature. How would I go about doing this? I
> need to be able to set multiple timers on the fly within my script and
> have them only run once.
>
> Sky Blueshoes

I'm sure there's a better way, but here's a simple scipt using threads and a 
simple timer subroutine:

#!/usr/bin/perl -w
use strict;
use threads;

my $timer1 = threads->create(\&timer, \&timer_test, 1, 0);
$timer1->join();

sub timer {
        my($subroutine, $interval, $max_iteration) = @_;
        for (my $count = 1; $max_iteration == 0 || $count <= $max_iteration; 
$count++) {
                sleep $interval;
                &$subroutine;
        }
}

sub timer_test {
        print "Testing...\n"
}

You'd need to modify the timer subroutine in order to pass arguments to the 
routine executed by it.

Stephen Kratzer
CTI Networks, Inc.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to