How to Validate Email Addresses with Perl
Whatever the reasons for its invalidity, you do want to catch the broken address — to prompt the user to re-inter maybe, or to avoid sending an email that's sure to go nowhere.
In Perl, you can concoct a complicated regular expression, of course; or you turn to a handy module that already has one built in and can check domain names, too.
Validate Email Addresses with Perl
To check email addresses for the well-formedness and validity in a Perl script or program:
- Build email validation into the HTML code if you have users type email addresses into a web form.
- Use Email::Valid->address('') from the Email::Valid CPAN Perl module; see below for details, installation and examples.
Email::Valid Email Address Validation Examples
Assuming $email_address holds the address to be checked, you can check its validity using:
#!/usr/bin/perluse Email::Valid$email_address = 'me@@example.com';if (Email::Valid->address($email_address)) {# The email address is valid} else {# The email address is not valid}
You can also have Email::Valid check for valid top-level domains (making sure ".com", ".net", ".cn" or another valid domain name is at the email address's very end).
Make sure the Net::Domain::TLD module is installed.
#!/usr/bin/perluse Email::Valid$email_address = 'me@@example.com';if (Email::Valid->address(-address=> $email_address,-tldcheck => 1)) {# The email address is valid} else {# The email address is not valid}
Install the Email::Valid Perl Module
To equip your Perl installation with the Email::Valid module for validating email address correctness:
- Open a command prompt.
- Under Mac and Linux, open the Terminal application, for example.
- Type
sudo perl -MCPAN -e 'install Email::Valid'
(Mac and Linux) orperl -MCPAN -e 'install Email::Valid'
. - Press Enter.
- Enter the super user password and press Enter if prompted.
- Asked Would you like me to configure as much as possible automatically?, choose "yes" unless you know
- Asked Is it OK to try to connect to the Internet?, enter "yes" as well.