while ($buf =~ /$pat/gp) { push @{ $self->{seen} }, [(pos $buf) - length ${^MATCH}, pos $buf] if not $sub or $sub->(substr ${^PREMATCH}, -200); }