$pid = Parallel::Jobs::start_job({ stdin_file => filename | stdin_handle => *HANDLE, stdout_handle => *HANDLE | stdout_capture => 1, stderr_handle => *HANDLE | stderr_capture => 1 }, ... cmd as above ...); #### #!/usr/bin/perl -w use strict; use Parallel::Jobs; my($pid, $pid2); print "Main start\n"; $pid = Parallel::Jobs::start_job(\&hello()); print "Started hello: $pid\n"; $pid2 = Parallel::Jobs::start_job(\&middle()); print "Started middle: $pid2\n"; my ($pid_new, $event, $data) = Parallel::Jobs::watch_jobs(); while(defined($event)) { print "$pid_new, $event, $data\n"; ($pid_new, $event, $data) = Parallel::Jobs::watch_jobs(); } ciao(); print "Main end\n"; exit 0; ################################# #subroutines ################################# sub hello{ print "Hello. I want a nap.\n"; sleep(10); print "Hello. I just slept 10 seconds.\n"; } sub middle{ print "Middle: I'm impatient, so I will print now.\n"; } sub ciao{ print "Ciao. All the parallel parts are done.\n"; }