Start with your production code and delete a section at a time until you find the sensitive chunk, then focus on that. It is very unlikely that you require the full code for both scripts to reproduce the problem. ikegami's suggestion that you are in some fashion launching a shim that launches something else to do the real work then exits is the best answer so far without any further information, but doesn't sound likely in your case where you are launching another Perl script.
At the very least post the three or four pertinent lines around the system call.
DWIM is Perl's answer to Gödel