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


in reply to Re^3: Recursive substitution
in thread Recursive substitution

You say want a regex to do something, but all of your examples place a loop outside of a substitution. Regex can't do substitutions. There's some disconnect in your explanation.
Yes, you're right. I am using regex (improperly) to mean regex-with-substitution, i.e., s/// (with whatever non-/e switches and internal decorations you like, but as little /e, (?{}), and (??{}) as possible).
That doesn't mean you need recursion to count from 1 to 10. You need a loop, no matter how it's implemented.

I know I don't need recursion. I want recursion.

I think it's reasonable to say “The problem can't be solved under these stupid restrictions”, or “I don't care to try to solve the problem under these stupid restrictions”, but not “Problems with stupid restrictions are wrong problems”. The drive to minimalism (of axioms) is, I think, at the heart of computer science; it's certainly at the heart of mathematics, and, as I am a mathematician, it's what drives me.

UPDATE: On re-reading, that was an over-reaction to something that probably wasn't your position at all. Anyway it was more than a bit rude, so I apologise.

Replies are listed 'Best First'.
Re^5: Recursive substitution
by ikegami (Pope) on Nov 10, 2009 at 18:16 UTC

    I want recursion.

    Sorry, but you can't execute another s/// without /e, (?{}) or (??{}). Recursion is out.

    As for a solution without recursion, I don't know of any.

      Sorry, but you can't execute another s/// without /e, (?{}) or (??{}).
      Since the regex engine isn't re-entrant, I can't execute another s/// even with /e, (?{}), or (??{}), right?
        That is my understanding. You can have recursive patterns, but I don't think you can enter another match when one is already in progress.