I wrote a job queue manager for $work, but it's currently too tied into our particular application for me to release it. It's probably overkill for you though. I think you could just use
Parallel::ForkManager for this. See the URL example in the docs.