http://qs321.pair.com?node_id=147305


in reply to Win32 Execution: UNiX Style (NT)

Moving from typing <cite>perl foo.pl</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 foo.pl 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.pl 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!

Cheerio!
Osfameron
http://osfameron.perlmonk.org/chickenman

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

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