The Perl script implements a server event loop. In case it receives a "burn" command from the client, it have to call an external program called 'xorriso' to burn the processed data onto a disc. While the burning takes quite some time, I want the server loop to keep processing other client requests in the meantime.
I have written my own event loop already and I am not going to replace it with some other public domain event loop modules.
In that case you might be interested in IPC::Run's start/pump/finish interface (or in your case pump_nb), which will let you run a separate process and communicate with it while it is running.