That program suffers from a race condition that can result in a deadlock. Should the child send a sufficient amount of data to its STDERR, it will block until the parent reads from its STDERR, but the parent is blocked reading the from the child's STDOUT.
open3 is too low-level for most tasks. perlcritic should not have recommended this. Please use IPC::Run3 or IPC::Run instead.
I have just raised this issue here.
In reply to Re: Using IPC::Open3 instead of backtick operator
by ikegami
in thread Using IPC::Open3 instead of backtick operator
by rcrews
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |