#!/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;