in reply to Weird open() return code in pipe mode
At a guess, I'd say that when you add the string ">/dev/null", perl has to spawn a shell to make that work,so open returns the PID of that shell process. Without the ">/dev/null", perl probably just does a fork+exec(program).
Again, just a guess.
In Section
Seekers of Perl Wisdom