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";