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


in reply to display stuff based on systemclock

If I understand your problem correctly, you just want to display one of a number of messages based on the current time, then quit.

UPDATE: As noted by Ikegami below, this is wrong!
"So take the current time in seconds; mod it by the total number of seconds in a message cycle, and divide the results by the number of messages you have:"

The correct formula (Thanks to Ikegami again) is (time / message-display-time) mod number-of-messages.

# See correct version of this by ikegami below! @message = ("Message 1", "Message 2", "Message 3", "Message 4", "Message 5", "Message 6", "Message 7", "Message 8", "Message 9", "Message 10"); $num_msgs = @message; $msg_time = 5; $total_time = $num_msgs * $msg_time; $msg_num = int((time() % $total_time) / $num_msgs); print $message[$msg_num], "\n";

Replies are listed 'Best First'.
Re^2: display stuff based on systemclock
by ikegami (Patriarch) on Jul 09, 2009 at 18:23 UTC

    Ah! That's what the OP meant. Unfortunately, there's a bug in your formula.

    It displays the first $msg_time messages for $num_msgs seconds.
    It should display the $num_msgs messages for $msg_time seconds.

    Fixed:

    my @message = ( "Message 1", "Message 2", "Message 3", "Message 4", "Message 5", "Message 6", "Message 7", "Message 8", "Message 9", "Message 10", ); my $msg_time = 5; print $message[ time / $msg_time % @message ], "\n";
      You are, of course, right. A little more time spent verifying my results would definitely have been worth while!
        Exactly what i wanted. Thank you both for helping me.
        Wire64