Get yourself a copy of RFC 2822. (Don't
forget to allow for obsolete addresses; not everyone has
read this RFC yet.) If you have access to the O'Reilly
book Mastering Regular Expressions, there's a
regex in the back of the book that does an incomplete
job of checking email addresses, but is about as close as
you can get with a plain regex. (Be warned, it's 6598
characters.)
Why don't you want to use a module?
Update: If you want to do email verification by
hand, the best advice I can give you is to study RFC 2822
thoroughly. You'll also find Text::Balanced
useful for pulling apart the address.
--
The hell with paco, vote for Erudil!
:wq