http://qs1969.pair.com?node_id=778615


in reply to Re: display stuff based on systemclock
in thread display stuff based on systemclock

no i dont want it to use sleep, i want the program to exit after displaying the message.
So when i execute the program at 7:05:02 i get a message and if i execute the program at 7:05:06 i get the next message. Should have explained that sorry. and i dont want to write to disk either.

Replies are listed 'Best First'.
Re^3: display stuff based on systemclock
by ikegami (Patriarch) on Jul 09, 2009 at 16:15 UTC
    Forgetting we're dealing with times for a second, that's usually done using by subtracting the remainder of a division by your slot size.
    $ perl -e'printf "%-3s %2d\n", "$_:", $_ - ($_ % 5) for 0..19' 0: 0 1: 0 2: 0 3: 0 4: 0 5: 5 6: 5 7: 5 8: 5 9: 5 10: 10 11: 10 12: 10 13: 10 14: 10 15: 15 16: 15 17: 15 18: 15 19: 15

    The same trick can be applied to times.

    $ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:40 $ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:40 $ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:45 $ perl -MPOSIX -le'@lt = localtime; $lt[0] -= $lt[0] % 5; print strfti +me "%Y-%m-%dT%H:%M:%S", @lt' 2009-07-09T12:14:45

    The question is what do you want to happen if 60 isn't divisible by $delay?