This post makes excellent points! Just to expand a little on regex testing - having many test cases helps:
#!/usr/bin/env perl
use warnings;
use strict;
use Test::More;
#use re 'debug'; # optional
my $regex = qr/(foo|bar)(quz|baz)?$/;
# "match / doesn't match" tests
like "foo", $regex;
like "bar", $regex;
like "foobar", $regex;
like "fooquz", $regex;
like "foobaz", $regex;
like "barbaz", $regex;
like "foobarquz", $regex;
like "foobarfooquz", $regex;
unlike "foobarquzbaz", $regex;
unlike "quzbaz", $regex;
unlike "hello", $regex;
unlike "foo ", $regex;
# etc.
# check capture groups
ok "foobar" =~ $regex;
is $1, "bar";
is $2, undef;
ok "foobarquz" =~ $regex;
is $1, "bar";
is $2, "quz";
ok "foobaz" =~ $regex;
is $1, "foo";
is $2, "baz";
# etc.
# and/or check return values in list context
is_deeply [ "foobar" =~ $regex ],
[ "bar", undef ];
is_deeply [ "fooquz" =~ $regex ],
[ "foo", "quz" ];
is_deeply [ "barbaz" =~ $regex ],
[ "bar", "baz" ];
# etc.
# an example with /g return values
is_deeply [ "foobarquzbaz" =~ /[aeiou]/g ],
[ "o", "o", "a", "u", "a" ];
# same thing, written differently:
my @matches = "foobarquzbaz" =~ /[aeiou]/g;
is_deeply \@matches, [ "o", "o", "a", "u", "a" ];
done_testing;
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.