I "fixed" the problem - typical Microsoft, the fix appears to have nothing to do with the original problem.
The initial PERL script was being invoked by a VB program (via a Win32 PROCESS CREATE API call). well, when I shelled the PERL call instead of creating a process everything works fine.
No idea why, but I'm glad it works...