Do you
really need to wait until a batch of 10 processes is finished before you start 10 more, or can you just keep 10 (or 100) running simultaneously, and start another process when one finishes. The latter is simple with
Parallel::ForkManager, the former might be simpler without Parallel::ForkManager, but could probably be done by creating a P::FM object that will run 10 processes at a time, but passing 10 jobs to each process, then using a new Parallel::Forkmanager object in the child process to run the 10 jobs simultaneously, thereby having 100 processes run simultaneously at any one time.