If you're bound and determined not to Build on the Shoulders of Giants and
use modules then you should consider cutting and pasting the good parts of
good modules directly into your code. A good example of this is your
admittedly nasty email regex: why not just cut and paste the patented regex
from Email::Valid into your code? It works, it's no effort on your part,
and it means you don't have to formally import the module. You might also
be able to do the same thing with one of the simple SMTP modules to
eliminate your reliance on SendMail. Of course, this means your code is
going to get long, but then, that's the whole reason why all this stuff was
modularized in the first place.