The error supplied doesn't agree with the code provided, but I get it too. I'm using an older version of Perl, though. I don't have a newer version for that system, so it could have been fixed since.
$ perl -e 'use warnings FATAL => qw(all); eval { open(CMD, "_bad_exe_
+a b c|") or die "open failed: $!\n" }; if($@){ die "$$: ERROR: $@" }
+print "$$: HOW DID I GET HERE?\n"; while(<CMD>){}'
11089: ERROR: Can't exec "_bad_exe_": No such file or directory at -e
+line 1.
11089: HOW DID I GET HERE?
$ perl -v
This is perl, v5.8.4 built for i386-linux-thread-multi
...
Update: I added the PID to the error messages in case something went bad with the forking code.
Update: Interestingly, open dies instead of returning an error. Notice how "open failed" is not part of the output. Are there two bugs here?
|