in reply to fork/exe, system open etc.

fork should be the way to do it.
E.g. you can detach normal command line scripts from the terminal and so let them run in the background by using:

fork && exit;

Because fork returns the child PID (>0) to the parent and 0 to the child it can be used as a boolean.
As similar code should work for you. Did you tried to set $SIG{CHLD} = 'IGNORE';?

AFIK exec replaces the perl interpreter process with the called command - that's not what you want.