in reply to Re^4: On the regex pattern variable to be inserted into another
in thread On the regex pattern variable to be inserted into another
I can't find any proof that anything is recompiled, even with //g.
Please compare the verbose output if you replace qr// with q//D:\>perl -E"my $x; BEGIN{$x=qr/a.*u/}; use re 'debug'; my $str = 'aou' +; say $str =~ /$x/" 1 D:\>perl -E"my $x; BEGIN{$x=qr/a.*u/}; use re 'debug'; my $str = 'aou' +; say $str =~ /$x/g" aou
D:\>perl -E"my $x; BEGIN{$x=q/a.*u/}; use re 'debug'; my $str = 'aou'; + say $str =~ /$x/" Compiling REx "a.*u" Final program: 1: EXACT <a> (3) 3: STAR (5) 4: REG_ANY (0) 5: EXACT <u> (7) 7: END (0) anchored "a" at 0..0 floating "u" at 1..9223372036854775807 (checking +floating) minlen 2 Matching REx "a.*u" against "aou" Intuit: trying to determine minimum start position... doing 'check' fbm scan, [1..3] gave 2 Found floating substr "u" at offset 2 (rx_origin now 0)... ... YADDA YADDA ...
So how do you know???
Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery
And that's whats happening if you have more than one precompiled regex inside the match, like expected.
D:\>perl -E"my $x; BEGIN{$x=qr/a.*u/}; use re 'debug'; my $str = 'aou' +; say $str =~ /$x$x/" Compiling REx "(?^u:a.*u)(?^u:a.*u)" Final program: 1: EXACT <a> (3) 3: STAR (5) 4: REG_ANY (0) 5: EXACT <ua> (9) 9: STAR (11) 10: REG_ANY (0) 11: EXACT <u> (13) 13: END (0) anchored "a" at 0..0 floating "ua" at 1..9223372036854775807 (checking + floating) minlen 4 String shorter than min possible regex match (3 < 4) Freeing REx: "(?^u:a.*u)(?^u:a.*u)"
FWIW:
This is perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x +64-multi-t hread
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^6: On the regex pattern variable to be inserted into another (which recompile???)
by NERDVANA (Priest) on Feb 11, 2022 at 13:39 UTC | |
by hv (Prior) on Feb 11, 2022 at 18:59 UTC |