in reply to Perl Idioms Explained - @ary = $str =~ m/(stuff)/g
This takes a paranoid approach, checking that there is no junk at the beginning of the string before the series of 'foo' begins, and no junk at the end. It would be more efficient to just saywhile ($str =~ s/\A(foo)//) { push @got, $1; } die "unexpected stuff in string: $str" if $str ne '';
but now you lose error checking. If $str contains 'xfooy' then the leading and trailing junk will be silently ignored. That's not great, since unmatched 'junk' more often than not indicates a bug in your regexp you need to fix. Is there a way to get the efficiency of m//g but still check that the whole string is matched? I suspect it will involve the \G anchor but I am not sure how.@got = $str =~ m/(foo)/g;
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Perl Idioms Explained - @ary = $str =~ m/(stuff)/g
by ed (Initiate) on Apr 07, 2015 at 15:49 UTC |