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
Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.