in reply to Win32 Execution: UNiX Style (NT)

Moving from typing <cite>perl</cite> to <cite>foo</cite> using the above method will work for standalone programs but not for more complicated Command Lines, e.g. <cite>foo > foo_results.txt</cite> Similarly, if is a filter (like a pager program, or a program that makes substitutions to its input), then <cite>mycommand | foo</cite> also won't work.

This is due to a bug, apparently in Win32. (Though as batch files and executables can quite happily redirect input/output, I don't understand why it can't be circumvented??).

A workaround is to turn any perl scripts that need to redirect IO into a batch file, which doesn't have the same bug... Luckily the handy pl2bat program that comes standard with Win32 distributions of Perl does this, basically by putting a batch wrapper script around your Perl code.

pl2bat foo.bat | more foo | more foo > results.txt dir | foo
Note: This doesn't contradict the effectiveness of the original technique above for simple scripts though!


Replies are listed 'Best First'.
Re: Re: Win32 Execution: UNiX Style
by emcb (Beadle) on Mar 16, 2002 at 03:33 UTC

    ive got w2k/datacenter running and i can do stuff like redirect output, and it works with 'more'.