probier mal http://www.lyris.com/help/HowdoIvalidateEmailAddressesinmyPerlprograms_.html
So ganz stimmt das Listing nicht. In Domainnamen werden zu wenig Zeichen ausgeschlossen. Erlaubt sind [A-Za-z0-9-]. In TLDs kommen (derzeit noch) keine Ziffern vor. In Usernamen (vor dem @) sind IIRC noch % und _ erlaubt.
Zusätzlich könnte man noch eine DNS-Abfrage auf die Domain machen, um zu testen, ob sie existiert.
Stefan