in reply to Program arg interfering with redirecting STDERR to STDOUT

It's the shell in either environment that provides for the command line redirection syntax (2>&1). When you use backticks, the shell is bypassed unless you explicitly state it.

Something along these lines might work.

my $shell = $^O eq 'MSWin32' ? "$ENV{comspec} /c " : "$ENV{shell} /?"; ## Bad guess my @output = `$shell java yourprog 2>&1`;

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algoritm, algorithm on the code side." - tachyon