in reply to Stopping excessive periods in email

First, it's a patently bad idea: my active gmail address has two dots before the @ (think first.middle.last@gmail or similar), and for years, I had an @alumni.collegenamehere.edu alternate email address (until they stopped providing email for alumni). So I personally have had at least two valid, non-spam emails that had more dots than your rules allow. (That's as annoying as the institutions who don't allow my email with a hyphen in the username, so I've had to create an alias email that doesn't include the hyphen.)

Second, you should be able to test it yourself. In this example, I use Test::More unlike (which will have the test pass if it doesn't match the regex, and fail if it does) and throw a bunch of emails at the regex, to see which ones would be "good" emails and which would be "bad". If you have other outlier emails you wanted to test, you could add more emails into the test list

#!perl

use 5.012; # strict, //
use warnings;
use Test::More;

for (qw/
test@gmail.com
test.test@gmail.com
test.test.test@gmail.com
test.test.test.test@gmail.com
test@subdomain.domain.com
test.test@subdomain.domain.com
test.test.test@subdomain.domain.com
test@test@domain.example
test,test@domain.example
test@first.example,test@domain.example
{
unlike $_, qr/\@.*\@|,|\..*\..*\.|\n/i, "test '$_'";
}
done_testing;
__END__
Possible attempt to separate words with commas at C:\Users\peter.jones
ok 1 - test 'test@gmail.com'
ok 2 - test 'test.test@gmail.com'
not ok 3 - test 'test.test.test@gmail.com'
#   Failed test 'test 'test.test.test@gmail.com''
#                   'test.test.test@gmail.com'
#           matches '(?^ui:\@.*\@|,|\..*\..*\.|\n)'
not ok 4 - test 'test.test.test.test@gmail.com'
#   Failed test 'test 'test.test.test.test@gmail.com''
#                   'test.test.test.test@gmail.com'
#           matches '(?^ui:\@.*\@|,|\..*\..*\.|\n)'
ok 5 - test 'test@subdomain.domain.com'
not ok 6 - test 'test.test@subdomain.domain.com'
#   Failed test 'test 'test.test@subdomain.domain.com''
#                   'test.test@subdomain.domain.com'
#           matches '(?^ui:\@.*\@|,|\..*\..*\.|\n)'
not ok 7 - test 'test.test.test@subdomain.domain.com'
#   Failed test 'test 'test.test.test@subdomain.domain.com''
#                   'test.test.test@subdomain.domain.com'
#           matches '(?^ui:\@.*\@|,|\..*\..*\.|\n)'
not ok 8 - test 'test@test@domain.example'
#   Failed test 'test 'test@test@domain.example''
#                   'test@test@domain.example'
#           matches '(?^ui:\@.*\@|,|\..*\..*\.|\n)'
not ok 9 - test 'test,test@domain.example'
#   Failed test 'test 'test,test@domain.example''
#                   'test,test@domain.example'
#           matches '(?^ui:\@.*\@|,|\..*\..*\.|\n)'
not ok 10 - test 'test@first.example,test@domain.example'
#   Failed test 'test 'test@first.example,test@domain.example''
#                   'test@first.example,test@domain.example'
#           matches '(?^ui:\@.*\@|,|\..*\..*\.|\n)'
not ok 11 - test 'contains
[download]