$now = time(); while ($timers[0]->{when} <= $now) { my $timeout = shift @timers; &{$timeout->{callback}}($timeout->{calldata}); } select($rout=$bits, $wout='', $eout='', $timers[0]->{when}-$now);