The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Schedule::Poll - Evenly schedule recurring events with various intervals

SYNOPSIS

    use Schedule::Poll;

    # Let's run a few things every 3 seconds,
    # and some things every 6 seconds

    my $config = {
        foo => 3,
        bar => 3,
        baz => 3,
        zip => 6,
        zoo => 6,
        zat => 6
    };

    my $poll = Schedule::Poll->new( $config );

    while(1) {

        if (my $aref =  $poll->which  ) {

            for my $each (@$aref) {

                print "$each fired!\n";
            }
        }
        sleep 1;
    }

METHODS

new

Constructor. Accepts a hashref with the values being an interval in seconds. Each interval used should be a divisor of 86400.

    my $poll = Schedule::Poll->new({
    
        foo => 300 # 5 minutes
        bar => 600 # 10 minutes
        baz => 5   # 5 seconds
    
    });

which

Returns an arrary reference containing the items for that current tick interval.

    $poll->which;

Examples

    $href = {
        a => 3,
        b => 3,
        c => 3
    };

    Timeline:
        interval | 1  2  3  4  5  6  
        ---------+------------------
        key      | a  b  c  a  b  c


    $href = {
        a => 3,
        b => 3,
        c => 3,
        d => 6,
        e => 6,
        f => 6
    };

    Timeline:
        interval | 1  2  3  4  5  6  7  8  9  10  11  12 
        ---------+--------------------------------------
        key      | b  a  c  b  a  c  b  a  c  b   a   c
                 | d     e     f     d     e      f

AUTHOR

Michael Kroher, <michael at kroher.net>