Dear Mike,
After some serious test of the data the script works well. I have one tip, if you use multithreds try to check what the optimal number of cores. From my experaince if you use to much, the Parallel::ForkManager is working abruptly, it can even work when u kill the process from the console. From the Parallel::ForkManager documentation and my experience :) it is a bad idea to run the parallel work in more that one terminal window. The optimal number of cores in my case was '4' wen i tried to run the data on 8, 12 or 16 it was working much slower, probably due to memory limitations.