in reply to pattern matching and sendmail issues

A simple regular-expression extractor for internet e-mail addresses is (not fully RFC compliant, but will handle %99 of the addresses you see out there):
while($data=~/([\w.-]+\@(?:[\w.-]\.)+\w+)/gcs){ #e-mail address in $1 }

If I were use I'd consider using the Mail::Bulkmail module to do the sending. It is designed for doing mass-mailings like you describe.