in reply to A challenge...at least for me.

If what you want to do is to react to data coming from two processes, you can use select(). This will let you wait until there is data available from either of the two children. Just arrange to have each of the processes writing to a different file handle.

Look at IO::Select for an OO interface to select.

A possible advantage of using select is that you may not need to make a separate process to watch the log file.