in reply to IO::Select - is it right for this?

IO::Select is a package that allows you to monitor a group of sockets to see if they have data waiting to be read, or there is available space that can be written.

If the passage of data is 'one-way', that is to say the master program is only going to collect results from the child program/process after it's completed, a temp file is much simpler.

If all of the processes are running on the same machine, then you can use the process id($$) of a process as part of the filename, since the process id is guaranteed to be unique.