in reply to Using perl to manage child processes - critique my code.

You can use
use threads qw(yield); use Thread::Semaphore;
threads to spawn processes...and semaphore to control the treads...
Raghu