in reply to Re^3: Doubled print with eval and open3
in thread Doubled print with eval and open3

And for FreeBSD 6.1 and Perl 5.8.8, I get
pid is 18693 No error

The error occured in the forked child process, so the exec or die would get sent to the file handle piped to $ERROR, and only the child's $! would be affected if the fork succeeded.

ikegami erases the paragraph he was writting.
Oo! I just figured it out!

The OP must be on a system where fork is used ($^O eq 'os2' || $^O eq 'MSWin32' is false). The fork succeeds, but the exec fails. He's getting output from both the child and the parent! Fix:

my $pid = eval { open3($WRITE, $READ, $ERROR, "$command") }; if (!$pid) { # We're in the child. # The fork succeeded, but the exec failed. POSIX::_exit($!); } ...

Update: Oops! Looks like almut beat me to it here