I love me some Perl, don't get me wrong; but why would you wrap Java in Perl and then in Java again? Why are you invoking 3 different technologies (there's some shell in there) when 1 will do? If the inner Java requires an external call, why aren't you invoking it from Java?
If you are debugging a complex system, the easiest approach is to systematically debug sub systems. It sounds like your inner Java is outputting incorrectly. That means you should be debugging your Java or call-parameters, not hiding the problem in Perl.
If you do want to just ignore the issue with Perl, then see if invoking the Perl on the command line yields the expected output. If it does, then you are invoking Perl incorrectly in your Java; if it doesn't, then modify your Perl, perhaps as I've suggested above. I can't be more specific without seeing the actual code you are using at these interfaces.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.