### update: fixed ### thanks Hof -- I condensed working code poorly :( use re 'eval'; my @r; my $p = q/.(?{ ++$x[0] })^/; for (0..2) { my @x = (0); "ab" =~ $p; push @r, \@x; } print "$_->[0]" for @r;