while () { my @emails = $_ =~ m/([^\s<>]+\@[^\s<>]+)/g; $emails{$_}++ for @emails; } use Data::Dumper; print Dumper \%emails; __DATA__ go@away.comspam@me.net foo@baz.bar bar@ppp.ipsec wid@get.com jfreeman@[nospam]tassie.net.au