in reply to Re: /s and /m don't seem to be doing anything
in thread /s and /m don't seem to be doing anything
Combining this with LanX's comment about metachars gives enlightenment:
my $re1=qr/foo$/; my $re2=qr/foo$/m; $,="\t"; $\="\n"; # just for output print tf(qr/$re1/), tf(qr/$re1/m); print tf(qr/$re1$/), tf(qr/$re1$/m); print tf(qr/$re2/), tf(qr/$re2/m); print tf(qr/$re2$/), tf(qr/$re2$/m); sub tf { "$_[0] ".("foo\nbar\n"=~$_[0]?"T":"F") } __END__ (?^:foo$) F (?^:foo$) F (?^:(?^:foo$)$) F (?^m:(?^:foo$)$) F (?^m:foo$) T (?^m:foo$) T (?^:(?^m:foo$)$) F (?^m:(?^m:foo$)$) T
i.e. the modifiers need to be on the regex which contains the metacharacters which they affect. Makes sense but I didn't catch it right away.
perlop says this:
If a precompiled pattern is embedded in a larger pattern then the effect of "msixpluad" will be propagated appropriately.
It's possible I've missed some other documentation, but I find this statement possibly a bit misleading, since "appropriately" could be taken to mean that, for example, qr/$re1/m should propagate /m into $re1, as the OP expected.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: /s and /m don't seem to be doing anything
by LanX (Saint) on Dec 31, 2014 at 04:54 UTC | |
by AnomalousMonk (Archbishop) on Dec 31, 2014 at 18:29 UTC |