in reply to Re^3: Regex question - negatives
in thread Regex question - negatives

Hi,

Ah cool, didn't know about that feature either =)

Seems it doesn't wanna work with a s/// though?

This works fine, and prints out all the tag I expected:
while ($test =~ m{$re}g) { print "FOO:<$1>\n"; }
..while this only prints out the "test new line" one for some reason?
$test =~ s{$re}{ print "BLA: $1 \n"; }ge
EDIT, never mind - me being stupid with my syntax ;)

TIA

Andy

Replies are listed 'Best First'.
Re^5: Regex question - negatives
by jwkrahn (Abbot) on Jan 13, 2011 at 11:10 UTC
    ..while this only prints out the "test new line" one for some reason?

    while ($test =~ s{$re}{}ge) {
        print "BLA: $1 \n";
    }

    That is because s///g ignores context and just does all the replacements at once leaving the last match in $1.

    But m//g in scalar context will iterate through each match every time it is called in scalar context so that in a while loop $1 will contain each match in turn.

Re^5: Regex question - negatives
by ELISHEVA (Prior) on Jan 13, 2011 at 11:00 UTC

    Those "ah cool, I didn't know about that" moments are one reason I hang out around here.

    And you thought you were just going to get another set of eyes on your code....see Don't go all PerlMonks on me :-)

      heheh yeah, me too! Don't know where I would be without people like you on perlmonks - has saved my sanity many many times ;)

      BTW - that code works a charm :)

      my $re= qr{\[\[ # opening delimiter ( # capture... (?: # a group (?!\]\]) # that does not start with ]] . # and is a single character long )+ # and many of these groups, at least one. ) \]\] # closing delimiter }x; $section_contents =~ s{$re}{Process_Tag($1,$hidden_query,$tag_cfg, +$is_preview)}ge; # process stuff like [[1234]] or [[http://www.site.c +om]]
      Thanks again everyone!

      Cheers

      Andy