Is it possible to perform a s///g substitution in such a way that the substituted text is itself recursively parsed? That is, can I mangle the code
so that I wind up instead with $_ = 'aaaab'? (I don't mean by taking $_ = 'aaab' to begin with, either. :-) )$_ = 'ab'; s/^(a{1,3})(?=b)/$1a/g; # => $_ = 'aab'
The problem, as I understand it—and this is probably either over-simplified or blatantly wrong—is that pos is set to point just after the substitution; but something silly like setting pos manually doesn't seem to help either:
$_ = 'ab'; s/^(a{1,3})(?=b)/pos = 0, $1 . 'a'/eg; # still, $_ => 'aab'
UPDATE: By the way, I know that I could just do something like 1 while s///, but I'm curious—purely for academic reasons (or, really, if you must know, because of moritz)—if it can be done entirely inside the regex itself; that is, if regexes can provide the necessary control structure. (Sorry, I unfairly added this while bobf and ikegami were replying.)
In reply to Recursive substitution by JadeNB
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |