in reply to Re: open(KID, "-|") and wait()?
in thread open(KID, "-|") and wait()?

I'd suggest SIG{CHLD} = 'IGNORE'; unless you care what the child processes get up to after they spring into life.