http://www.perlmonks.org?node_id=640259


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.