Regarding the review noting "Undefined subroutine &Scalar::Util::set_prototype" issues, this is a symptom of Scalar::Util having been compiled without XS features on the target system. A `make test` of Scalar::Util distribution should have identified this, e.g. "set_prototype requires XS version".
Scalar::Util normally installs all XS features by default, so you may have a system-level configuration or compatibility issue that prevented it from properly identifying a compatible compiler/make utility. Or, the Scalar::Util distribution may not have been properly installed.
As of this writing, you can force the XS components of Scalar::Util distribution be compiled via `perl Makefile.PL -xs`.
I converted a mass-emailer program that originally did its own fork()ing to use forks instead. The performance overhead was minimal and the code became smaller and more concise.
That was back in 2003. Since then, the emailer has successfully delivered many millions of (legitimate) emails on a Fedora linux machine. Uptime has reached 2 years or more, and the only interruptions we've had were because of moving the server from one data center to another.