in reply to Re^2: Parameterized Regex
in thread Parameterized Regex

If you use a named capture, then you can use that capture for a subsequent match, perhaps a new regex. ... using a named capture this way in a new regex ...

Could you give an example of what you mean? AFAIU, the  %+ hash is re-initialized when a new regex match is entered.

c:\@Work\Perl\monks>perl -wMstrict -le "my $s = 'one two three four'; ;; $s =~ m{ \A (?<save> \w+) \s+ (?<this> \w+) \s+ (?<for> \w+) \s+ (?<later> \w+) \s* \z }xms; print join '-', @+{ qw(save this for later) }; ;; $s = 'fee fie foe fum'; ;; $s =~ m{ (?{ print join '==', @+{ qw(save this for later) } }) \A (?<save> \w+) \s+ (?<this> \w+) \s+ (?<for> \w+) \s+ (?<later> \w+) \s* \z }xms; print join '+++', @+{ qw(save this for later) }; " one-two-three-four Use of uninitialized value in join or string at (re_eval 1) line 1. Use of uninitialized value in join or string at (re_eval 1) line 1. Use of uninitialized value in join or string at (re_eval 1) line 1. Use of uninitialized value in join or string at (re_eval 1) line 1. ====== fee+++fie+++foe+++fum
To do something like you suggest, you would have to "capture the capture" in a separate set of variables before the new match was entered.


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^4: Parameterized Regex
by Laurent_R (Canon) on Mar 03, 2017 at 23:33 UTC
    Yes, I guess you're most probably right that %+ hash is probably lost when you enter a new regex. Although my initial point was really about using the named capture within the same regex.

    Besides the fact that I wrote my previous post on a mobile device while commuting to work, with no chance to test, I guess I got carried away by the fact that I am working much more on Perl 6 than on Perl 5 these days when it comes to these matters.

    Having said that, I still believe that named captures can bring you something (limited) in that direction. But too late now, I'll try to come up with something tomorrow.