>>20
openでパイプが開いて、処理がPerl側に戻ってくる前に、
プロセスが一杯になってるのでは。
それだとopenはエラーを返さない可能性があると思うけど。
21の言っているように、開けるプロセス数を増やしてみては。