# untested use Proc::Queue size => 4, ignore_children => 1, qw(run_back); sub docalc { run_back { my $filename = $_; my $filenamewithpath = $File::Find::name; my $directoryname = $File::Find::dir; my $workdirectory = ...; mkpath($workdirectory); copyfiles(...); chdir $workingdirectory; open STDOUT, '>', "$workbasedirectory/$filename.log"; do "/.../scriptthatincludesfortran.pl" } or warn "unable to fork new process to handle '$_': $!" }