Advice on parsing e-mail addresses: don't. It's a lot more complex than it looks at first glance. The only regex capable of getting it anywhere close to right is a few hundred characters long, and that doesn't even get embedded comments.
Instead, use Email::Valid (which contains that massive regex already) to check if the address conforms to RFC 822 (which defines the format for e-mail addresses), then use a simple /(.*)/ to untaint it if it passes (that is, if you really have to untaint it).
Update: About the code you wrote above--you're not capturing any data in the regex, so $1 and $2 won't be intitilized. For future referance, you need to do something like:
if($str =~ /([\w\.]+)\@([\w\.]+)/) { $untainted = "$1\@$2"; }
But my comments above still apply.
----
I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
-- Schemer
Note: All code is untested, unless otherwise stated
In reply to Re: slightly broken reg-ex
by hardburn
in thread slightly broken reg-ex
by jcpunk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |