in reply to Re: forked kid can't read from IO::Select->can_read
in thread forked kid can't read from IO::Select->can_read

You might want to read open a bit more carefully. Further down it says,
If you open a pipe on the command ’-’, i.e., either ’│-’ or ’-│’ with 2-arguments (or 1-argument) form of open(), then there is an implicit fork done, and the return value of open is the pid of the child within the parent process, and 0 within the child process. (Use "defined($pid)" to determine whether the open was successful.) The filehandle behaves normally for the parent, but i/o to that filehandle is piped from/to the STDOUT/STDIN of the child process. In the child process the filehandle isn’t opened--i/o happens from/to the new STDOUT or STDIN.
  • Comment on Re^2: forked kid can't read from IO::Select->can_read