in reply to Re: Re: Pattern match location finding
in thread Pattern match location finding

Reset pos() to 1 + $-[0] so you're ready for the next character then.

Replies are listed 'Best First'.
Re**4: Pattern match location finding
by flounder99 (Friar) on Feb 19, 2004 at 02:13 UTC
    You could also use a zero width lookahead. Just leave one character out of the zero width lookahead to increment pos().
    use strict; my $mystring = "AABAABAA"; my @array; {} while $mystring =~ /A(?=ABAA)(?{push @array, pos($mystring)})/g; print join(",", @array),"\n"; #or without any fancy "experimental" regex stuff @array=(); while ($mystring =~ /A(?=ABAA)/g) { push @array, pos($mystring) } print join(",", @array),"\n"; __OUTPUTS__ 1,4 1,4
    That is the 1 based position shown in the original post. If you want 0 based just use push @array, pos($mystring)-1

    --

    flounder

      That's a good idea. I don't think I recommended anything esperipmental thpogh.