Are you stuck with 5.6.0? I'd download ActiveState 5.8.0 and use ithreads; there is a Thread::Queue object included in the core distro if you're using threads, you just have to create your shared queue(s) before breaking out. It is designed to be thread-safe, but you'll soon hear the howls of, "it's not production-ready" or "it's not stable yet". I haven't had too much trouble with threads myself though. I have a process that I was testing that would run about 60 days before strange stuff began happening (and that was probably my code ;) Anyway, you might check that.