In a test script, I am trying to match a line using like(), which requires the qr// form of regex. However, the /m modifier does not seem to work. A sample script illustrating the problem follows:
!/usr/bin/env perl use strict; use warnings; use Test::More qw(no_plan); my $string = "abc\ndef\nghi"; # (1) Passes like($string, qr/def/m, 'found def'); # (2) Passes like($string, qr/^def/m, 'found ^def'); # (3) Fails like($string, qr/def$/m, 'found def$'); # (4) Fails - this is the test I want to run like($string, qr/^def$/m, 'found ^def$'); # (5) Passes ok(($string =~ m/^def$/m), 'found ^def$'); # (6) Passes - supposedly the equivalent of (4)? ok(($string =~ m/(?m-xis:^def$)/), 'found ^def$');
In this toy example, I am looking for a line matching (exactly) 'def' within the string. It may be the first line, the last line (without a newline), or anywhere in between. In this example, it is in the middle.
My ideal match would be qr/^def$/m (test 4), but it does not seem to work. The fact that (2) passes, and (3) fails leads me to believe that it is just the '$' that has the problem.
I would much appreciate if anyone could enlighten me as to what I am doing wrong.
Thanks,
Gary
In reply to Use of qr// modifier with Test::More::like by gary.monson
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |