in reply to Forked pipe open...or do???

I think this excertp from perlipc explains it a bit better than what you have:
use English '-no_match_vars'; my $sleep_count = 0; do { $pid = open(KID_TO_WRITE, "|-"); unless (defined $pid) { warn "cannot fork: $!"; die "bailing out" if $sleep_count++ > 6; sleep 10; } } until defined $pid;
update: Just forgot.... You already read it... So here is a bit of explanation. The "open" returns a process ID, 0 or undef.
undef
We are out of processes. This is when open fails
0
This is the child process... The "or" part of your open. But it would be reached for undef too!
pid
This is for the parent process to have a pid to wait for.

s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
+.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e