Hi Aureliano, It's a good question. The short answer is I haven't had any memory problems with the toy examples so far, but I haven't scaled up the regex to know how it behaves when testing for hundreds (or thousands) of matches. I suppose there might be some way to restrict array values to Int-only; that would save some space.
Either way, I think it's pretty exciting that I can add extra lines to the regex--lines that are identical except for the search string--and it works (example below). This seems like a huge improvement in "regex-ology". Please copy the list since we all benefit from these communications. Myself, I'm interested in finding out how $/.pos knows not to fill the @a array with duplicate values on failed matches. It works for now, and (if it wasn't clear from my last email), the regex can be rearranged to return a final "success" value if found at the proper position (the end) of an input string: use v6 my $test = " foo bar success"; my @a = 0; say $test ~~ { m /^\s+ {@a.push($/.pos)}/; m :pos(@a[*-1]) /foo\s+ {@a.push($/.pos)}/; m :pos(@a[*-1]) /willnotmatch\s+ {@a.push($/.pos)}/; m :pos(@a[*-1]) /bar\s+ {@a.push($/.pos)}/; m :pos(@a[*-1]) /success {@a.push($/.pos)}/; } #returns 「success」 HTH, Bill. On Mon, Aug 19, 2019 at 5:02 PM Aureliano Guedes <guedes.aureli...@gmail.com> wrote: > > Commonly, in my experience, this kind of operation has no more a memory > problem (nowadays we most account with some Gb of memory, sometimes Tb) but > storing in an array or hash may lead us to unnecessary memory usage, right? > Sorry for the newbie silly question. > > On Mon, Aug 19, 2019 at 8:13 PM William Michels <w...@caa.columbia.edu> wrote: >> >> Thanks to Brad Gilbert's code contribution in this thread, I re-wrote >> a small snippet of his code (code that incrementally checks a series >> of regex matches), to have it return the last position of each match. >> Testing with three 'matches' and one 'willnotmatch' returns three >> positional values, as expected: >> >> use v6 >> my $test = " foo bar"; >> >> sub foo($x) { >> state @a = 0; >> $x ~~ m /^\s+ {@a.push($/.pos)}/; >> $x ~~ m :pos(@a[*-1]) /foo\s+ {@a.push($/.pos)}/; >> $x ~~ m :pos(@a[*-1]) /willnotmatch {@a.push($/.pos)}/; >> $x ~~ m :pos(@a[*-1]) /bar {@a.push($/.pos)}/; >> return @a[1 .. *]; >> } >> >> #say foo($test); # returns (6 10 13) >> put foo($test); # returns 6 10 13 >> >> >> I'm actually pleasantly surprised that I can add a dozen or so >> 'willnotmatch' lines, and it doesn't screw up the result. The next >> step might be to 1). pull the individual regexes out into an object >> (as suggested in the SO post below) to simplify each smartmatch line, >> and/or 2). store the results in a hash (instead of an array), for >> later substring extraction. But at this point it seems I'm getting >> into 'Grammar' territory, so that might be the better approach. >> >> HTH, Bill. >> >> https://stackoverflow.com/questions/50829126/perl6-interpolate-array-in-match-for-and-or-not-functions/50838441#50838441 >> >> >> >> >> >> >> >> >> On Mon, Aug 19, 2019 at 1:08 AM Patrick Spek via perl6-users >> <perl6-us...@perl.org> wrote: >> > >> > On Sun, 18 Aug 2019 13:45:27 -0300 >> > Aureliano Guedes <guedes.aureli...@gmail.com> wrote: >> > >> > > Even being another language, Perl6 should be inheriting Perl5's >> > > regexes or even improving it not making it uglier and harder. >> > > >> > > Or I'm seeing how to use it in an easy way. Also, dunno if there is >> > > some GOOD documentation to Perl6 regexes. >> > >> > Beauty is in the eye of the beholder. While I'm much more proficient >> > with PCRE than P6CRE, I do find the Perl 6 variants to be much cleaner >> > and easier to understand when reading regexes of others. >> > >> > If you find that there's a lack of documentation explaining things >> > clearly to you, that'd be an issue to solve in the documentation. This >> > takes a lot of effort, and if you would be so kind as to improve it >> > where you think it's needed, it would be a great help to everyone (we >> > can't really see how or where you're looking for what, after all). >> > >> > -- >> > With kind regards, >> > >> > Patrick Spek >> > >> > >> > www: https://www.tyil.nl/ >> > mail: p.s...@tyil.nl >> > pgp: 1660 F6A2 DFA7 5347 322A 4DC0 7A6A C285 E2D9 8827 >> > >> > social: https://soc.fglt.nl/tyil >> > git: https://gitlab.com/tyil/ > > > > -- > Aureliano Guedes > skype: aureliano.guedes > contato: (11) 94292-6110 > whatsapp +5511942926110