Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

m modifier not doing what I'm expecting?

by ultranerds (Friar)
on Dec 21, 2011 at 12:09 UTC ( #944601=perlquestion: print w/replies, xml ) Need Help??
ultranerds has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I'm trying to work out why this regex isn't working as I'm expecting. I'm using the /m modifier to make it treat the data as "new lines" per row, but it seems to just keep looping through on the first one:
my $data = <<_DATA_; == Example header 1 == a f == Header 2 example ==== sub header a sub sub header :) == Testing header item with some stuff in [[fffsdfsdf]] _DATA_ while ($data =~ /^\=\= (.+?)$/m) { print "FOO: $1 \n"; }
..just keeps printing out:

FOO: Example header 1 (repeatedly, til you kill the script)

Can anyone point me to where I'm going wrong?



Replies are listed 'Best First'.
Re: m modifier not doing what I'm expecting?
by Eliya (Vicar) on Dec 21, 2011 at 12:15 UTC

    You also want the /g modifier.  (/m alone matches from the beginning every time, thus the endless loop...)

      Aaah thanks - so was just missing the /g ... works like a charm now. Thanks!

Re: m modifier not doing what I'm expecting?
by moritz (Cardinal) on Dec 21, 2011 at 12:14 UTC

      This is not a problem here, as the dot isn't supposed to match a newline.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://944601]
Approved by Corion
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (2)
As of 2018-04-21 21:39 GMT
Find Nodes?
    Voting Booth?