develooper Front page | perl.perl5.porters | Postings from October 2003

/(\w|(?{++$n}))*/

Thread Next
From:
Jeff 'japhy' Pinyan
Date:
October 29, 2003 08:42
Subject:
/(\w|(?{++$n}))*/
Message ID:
Pine.LNX.4.44.0310291130040.15906-100000@perlmonk.org
I'm a little confused about the section of perlre which reads:

  The lower-level loops are interrupted (that is, the loop is broken)
  when Perl detects that a repeated expression matched a zero-length sub-
  string.   Thus

    m{ (?: NON_ZERO_LENGTH | ZERO_LENGTH )* }x;

  is made equivalent to

    m{   (?: NON_ZERO_LENGTH )*
       |
         (?: ZERO_LENGTH )?
     }x;

Is that "|" supposed to be there?  The code

  $n = 0;
  "abc" =~ /(\w|(?{++$n}))*/;

stores 'abc' in $& and 1 in $n.  The code

  $n = 0;
  "abc" =~ /\w*|(?{++$n})?/;

doesn't change $n.

-- 
Jeff "japhy" Pinyan      japhy@pobox.com      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]




Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About