in reply to Re^3: system() returns -1 with $SIG{CHLD}?
in thread system() returns -1 with $SIG{CHLD}?

Should I be doing something differently here

Yes, you shouldn't wait for a child started with system.

I don't want to be leaving any zombie processes around

system doesn't leave zombies cause it waits.