Hmm, interesting. I ran OP's code under a debugger as a learning exercise, and thought I'd inferred the problem. Maybe I just found a different one:
If that's true, why is "Error, Could not executed" printed.
On Windows it's not - there's a clue right there! Actually on Windows the OP's sample code just prints a comma. The following:
use strict; use warnings; use IPC::Open3; use IO::Select; use POSIX ":sys_wait_h"; use Symbol; my $ERROR=gensym(); my $command="not_a_command"; my ($WRITE, $READ); my $pid; $! = undef; eval {$pid = open3($WRITE, $READ, $ERROR, "$command");}; print "pid is $pid\n" if $pid; if ($@) { print "Trapped error $@"; } elsif (length $!) { print "Detected error: $!"; } else { print "No error"; }
prints:
pid is 3412 Detected error: No such file or directory
on Windows.
In reply to Re^3: Doubled print with eval and open3
by GrandFather
in thread Doubled print with eval and open3
by jlm17
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |