my $job = Win32::Job->new; my $pid = $job->spawn(); while( 1 ) { ## read and process next task sleep 3 while $job->status->{ $pid }{ exitcode } == $STILL_RUNNING ## 259?? and not -e 'killfile'; $job->kill if $job->status->{ $pid }{ exitcode } == $STILL_RUNNING; $job = Win32::Job->new; $pid = $job->spawn( ... ) }