in reply to STDERR with fork();

It has to fork a shell because he's using shell syntax (that `2>/dev/null' bit) to toss the ping's error output. If he wasn't using backticks and was manually doing a fork/exec, he could have reopened STDERR on /dev/null inside perl.

Of course he could have used POE::Component::Ping and not even bothered with the backticks. :)