What I would do: open 100+ files for writing. Find your files using File::Find. Write them to the 100 files in a round robin way (that way, you don't need to store all files in a huge list in memory). Close the files. Now start your jobs, each taking a different file containing file names to process as argument.