use Mojo::Base -strict, -signatures; use Mojo::IOLoop; Mojo::IOLoop->next_tick(sub ($loop) { say time-$^T, "s Loop PID is $$"; for my $i (0..1) { say time-$^T, "s Start of loop $i"; $loop->subprocess->run_p( sub ($j) { say time-$^T, "s Hello, from loop $i (arg $j) in PID $$!"; sleep 2; say time-$^T, "s Good bye, from PID $$!"; return "Return value of $i"; }->($i) )->then(sub ($result) { say time-$^T, "s Result from loop $i: $result"; })->catch(sub ($err) { say time-$^T, "s Subprocess error: $err"; }); say time-$^T, "s End of loop $i"; } }); Mojo::IOLoop->start; #### 0s Loop PID is 8353 0s Start of loop 0 0s Hello, from loop 0 (arg 0) in PID 8353! 2s Good bye, from PID 8353! 2s End of loop 0 2s Start of loop 1 2s Hello, from loop 1 (arg 1) in PID 8353! 4s Good bye, from PID 8353! 4s End of loop 1 4s Subprocess error: Can't locate object method "Return value of 0" via package "Mojo::IOLoop::Subprocess" at /opt/perl5.28/lib/site_perl/5.28.1/Mojo/IOLoop/Subprocess.pm line 53. 4s Subprocess error: Can't locate object method "Return value of 1" via package "Mojo::IOLoop::Subprocess" at /opt/perl5.28/lib/site_perl/5.28.1/Mojo/IOLoop/Subprocess.pm line 53. #### 0s Loop PID is 8462 0s Start of loop 0 0s End of loop 0 0s Start of loop 1 0s End of loop 1 0s Hello, from loop 0 (arg Mojo::IOLoop::Subprocess=HASH(0x55ba4daf9530)) in PID 8463! 0s Hello, from loop 1 (arg Mojo::IOLoop::Subprocess=HASH(0x55ba4eebd138)) in PID 8464! 2s Good bye, from PID 8463! 2s Good bye, from PID 8464! 2s Result from loop 0: Return value of 0 2s Result from loop 1: Return value of 1