Parse Email Addresses with Mail::Address
Mail::Address parses RFC 822-compliant mail addresses of the form:
"Full Name or Phrase" <username@host> (Comment Area)
For example, under RFC 822, an address might be represented as:
"Nathan V. Patwardhan" <nvp@mail.somename.com> (No Comment)
or:
"Nathan V. Patwardhan" <nvp@mail.somename.com>
The Mail::Address constructor parses an email address into three parts based on the categories shown above:
$addr = Mail::Address->new("Full Name or Phrase",
"username@host",
"(Comment Area)");Mail::Address also outputs portions of the mail address with
the functions phrase, address, comment, format, name, host, and user. The phrase, address, and comment functions represent the first,
second, and third entities that were passed to the Mail::Address
constructor, in which the phrase
function:
print $addr->phrase( );
outputs:
Nathan V. Patwardhan
the address
function:
print $addr->address( );
outputs:
nvp@mail.somename.com
and the comment
function:
print $addr->comment( );
outputs:
No Comment
A real mail address can be “unmangled,” or parsed from
its user@somehost.com format, with the user and host functions. The user function removes everything starting
with the @ to the end of the
address, and host removes
everything up to and including the @. Using the previous example of
nvp@mail.somename.com, the following
line:
print $addr->user;
outputs:
nvp
And the following line using the host function:
print $addr->host;
outputs:
nvp@mail.somename.com