http://www.perlmonks.org?node_id=1055930


in reply to Re: Named capture backreferences cannot be used in character classes?
in thread Named capture backreferences cannot be used in character classes?

You can use a postponed subexpression replacing It's flagged as "experimental" - that may affect your choice to use it.

That would certainly work -- and I don't have a problem with it being "experimental"; as far as I have observed it hasn't changed in all the years it has been there and I'm already having to where I need recursive regex -- but I prefer to avoid it if there is a less performance sapping alternative.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
  • Comment on Re^2: Named capture backreferences cannot be used in character classes?

Replies are listed 'Best First'.
Re^3: Named capture backreferences cannot be used in character classes?
by kcott (Archbishop) on Sep 27, 2013 at 13:09 UTC
    "... I don't have a problem with it being "experimental"; as far as I have observed it hasn't changed in all the years it has been there ..."

    When I read that this afternoon, that was my understanding too. However, poking aroung in perl5180delta some hours later (on a completely unrelated matter), I found: "/(?{})/ and /(??{})/ have been heavily reworked".

    That's really just an FYI, if you're interested. It's still marked "experimental" and I saw nothing to indicate any specific performance enhancements.

    -- Ken

      That's really just an FYI,

      Thanks for the heads up. I haven't moved onto 5.18 yet, but I will be doing so soon.

      Thankfully, my primary use of the feature is where I have regex elements that are codependent. EG.

      A => qr[...${B()}...], B => qr[...${C()}...], C => qr[...${A()}...],

      Which doesn't work because there is no way to order them such that all dependancies can be resolved at compile-time.

      Instead I have to use:

      A => qr[...(??{B()})...], B => qr[...(??{C()})...], C => qr[...(??{A()})...],

      Which doesn't seem to be affected by the changes.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.
Re^3: Named capture backreferences cannot be used in character classes?
by yitzchak (Sexton) on Sep 30, 2013 at 03:06 UTC
    They changed at one point; IIRC it used to be something like (?p{...}); I think Ilya originally envisioned it as a limited scope version of a hypothetical qr/foo$bar/p that would at match time use the current value of $bar.

      Thanks for the information.

      According to anonymonks addendum, this all pre-dates my first use of Perl which started just a couple of weeks before I found this place in June, 2002.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.