#sleep 10; &non_blocking_delay( 10000 ); sub non_blocking_delay { my $milliseconds = shift; my $mainloop = Glib::MainLoop->new; Glib::Timeout->add( $milliseconds, sub { print time, "\n"; $mainloop->quit; FALSE; } ); $mainloop->run; ; } #### Glib::IO->add_watch( fileno $fh, [ qw/in/ ], \&watch_callback, $fh ); sub watch_callback { my ( $fd, $condition, $fh ) = @_; my @lines = $fh->getlines; print @lines; #always return TRUE to continue the callback return TRUE; } }