Don't forget the basic debugging step of printing your things to check if they are what you think they are:
my $re1=qr/foo$/; my $re2=qr/foo$/m; my $re3=qr/foo$/s; $,="\t"; $\="\n"; # just for output print qr/$re1/, qr/$re1/m, qr/$re1/s; print qr/$re2/, qr/$re2/m, qr/$re2/s; print qr/$re3/, qr/$re3/m, qr/$re3/s; __END__ (?^:foo$) (?^:foo$) (?^:foo$) (?^m:foo$) (?^m:foo$) (?^m:foo$) (?^s:foo$) (?^s:foo$) (?^s:foo$)
So that means...
my $re1=qr/foo$/; print $re1, "\n"; print "foo\\nbar\\n =~ \/$re1\/ \t"; print "foo\nbar\n" =~ /$re1/ ?"true":"false"; print "\n"; print "foo\\nbar\\n =~ \/$re1\/m \t"; print "foo\nbar\n" =~ /$re1/m ?"true":"false"; print "\n"; my $re2=qr/foo$/m; print $re2, "\n"; print "foo\\nbar\\n =~ \/$re2\/ \t"; print "foo\nbar\n" =~ /$re2/ ?"true":"false"; print "\n"; print "foo\\nbar\\n =~ \/$re2\/m \t"; print "foo\nbar\n" =~ /$re2/m ?"true":"false"; print "\n"; __END__ (?^:foo$) foo\nbar\n =~ /(?^:foo$)/ false foo\nbar\n =~ /(?^:foo$)/m false (?^m:foo$) foo\nbar\n =~ /(?^m:foo$)/ true foo\nbar\n =~ /(?^m:foo$)/m true
(I haven't yet found the relevant bit of documentation that makes this behavior clear.)
In reply to Re: /s and /m don't seem to be doing anything
by Anonymous Monk
in thread /s and /m don't seem to be doing anything
by sciguy
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |