strictly as a guess, I suspect that it's the behavior of qx/ls/ that you don't fully understand.
in reply to qx vs WScript: Why didn't qx work in my ActiveState's PerlScript?
qx/ls/ really is telling Perl "drop to a shell and execute the command 'ls', and return the results."
That does the same thing that the Win32::Script module does but only when you have ls available as a tool!
On a virgin client Windows machine, you may not have ls available -- I have it on all my systems, because I use Cygwin for nearly everything, but your boss (or your boss's boss) probably doesn't have ls available as a tool on his or her desktop.
hmm... on reading back through your question, you say that redirecting the output of ls into a text file actually does create a text file. If my suggestion is right, it would be an error message, not the actual results. Perhaps I'm completely off after all...