```{index} single: EV::Timer ``` # EV::Timer ```{pperl-module-badges} EV::Timer ``` A relative timer, as `EV::timer` makes: its callback runs after a number of seconds, and optionally again at a repeat interval. These methods re-arm it and read or change its times; the methods all watchers share are `EV::Watcher`'s. A timer counts on a clock that changes to the system time do not move. Starting one with a negative repeat interval croaks `repeat value must be >= 0`. ## Synopsis ```perl # an inactivity timeout: re-armed on every read my $timeout = EV::timer 30, 30, sub { warn "idle for 30 s\n" }; my $reader = EV::io $sock, EV::READ, sub { ...; $timeout->again }; printf "%.1f s left\n", $timeout->remaining; ``` ## Functions ### Timing #### [`again`](Timer/again) Re-arm a repeating timer from now - the way to keep a timeout from firing while there is activity. #### `remaining` The seconds left until the timer fires, fractional; for an inactive timer, the time it was set to wait. #### `set` Set both times anew: `$w->set($after, $repeat)` (repeat default 0). An active timer restarts, counting `$after` from now. #### `repeat` The repeat interval; with an argument, set a new one and return the old. The timer is not restarted: an active timer uses the new interval from its next expiry. ```{toctree} :hidden: :maxdepth: 1 Timer/again ```