Do you have any info on the nature of cmd.exe's issues? I'm just really curious now as to what the underlying issue is.
pl2bat does work, although it's essentially just calling "perl test.pl", which I already know works. What I don't understand is, assuming you've got your .pl file association set up, what's the difference between just calling "test.pl", and "perl test.pl"?
The only thing I can think of is that when you force Windows to go out and find the associated program, it launches it in its own console rather than the existing one, and you somehow don't have access to that console's stdout (although you still get the output in your console, so...). Silly Windows.