#!/usr/bin/perl use strict; use warnings; use re qw/eval /; my $pattern = q/(.)(?{ print ++$counts[0]; })^/; my $line = 'ab'; for (0..2) { my @counts = (0); print "$_: "; # $pattern .= '(?=.)'; $line =~ /$pattern/; print "; \@counts = (", join(', ', @counts), ")\n"; } print "\@main::counts = (", join(', ', @::counts), ")\n"; #### 0: 12; @counts = (2) 1: 34; @counts = (0) 2: 56; @counts = (0) @main::counts = () #### 0: 12; @counts = (2) 1: 12; @counts = (2) 2: 12; @counts = (2) @main::counts = (2) #### 0: 12; @counts = (2) 1: 12; @counts = (2) 2: 12; @counts = (2) @main::counts = ()