perltutorial
tphyahoo
This is the second post in the [id://479461] series, and assumes you have read the first, main post.
<p>
In this installment, we learn how to use Test::More::like($string, $regex) and the qr quotelike operator to ask regex questions in a sane way. Let's dive right in.
<p>
******************BEGIN QUESTION TEMPLATE************************
<p>
O Wise Monks, I can't get this regex to do what I want it to do. As you can see, it fails two tests.
<code>
use warnings;
use strict;
use Test::More qw(no_plan);
my $emailsregex = qr/\w+@\w+\.(net|com|org)/;
while (<DATA>) {
like($_, $emailsregex)
}
__DATA__
timmytimmers@aol.com
hillary-hillers@aol.com
garbygerbil@herbill.gerbil.org
garbygerbil@herbill.gorgil.org
reginald_reggers@aol.com
</code>
I'm on Windows XP system using the standard ActiveState perl distribution.
<p>
I got both standard and error output out of my test, into one output file, by running this with
<code>emailsregex.pl > output.txt 2>&1 output.txt</code>.
<p>
The output I got was
<code>
ok 1
ok 2
not ok 3
# Failed test (emailsregex.pl at line 8)
# 'garbygerbil@herbill.gerbil.org
# '
# doesn't match '(?-xism:\w+@\w+\.(net|com|org))'
not ok 4
# Failed test (emailsregex.pl at line 8)
# 'garbygerbil@herbill.gorgil.org
# '
# doesn't match '(?-xism:\w+@\w+\.(net|com|org))'
ok 5
1..5
# Looks like you failed 2 tests of 5.
</code>
<p>
What the heck am I doing wrong?<p>
******************END QUESTION TEMPLATE************************
<p>
(Debugging the regex is left as an exercise for the reader.)