if (//data to read) { $loop->loop_once; } #### use IO::Async::Timer::Periodic; use IO::Async::Loop; my $loop = IO::Async::Loop->new; my $timer = IO::Async::Timer::Periodic->new( interval => 1, on_tick => sub { // something before // something after }, ); $timer->start; $loop->add( $timer ); $loop->run;