in reply to vertical regex in a matrix?

I wrote a program, named 'proximity', that does matrix-type things (2-D stuff, basically) with regexes.
#!/usr/bin/perl $string = << "END"; ABC DEF GHI END for $a (0 .. 2){ for $b (0 .. 2) { ($u,$l,$P,$r,$d) = prox($string, $a, $b); print "$P: u=$u, l=$l, r=$r, d=$d\n"; } } sub prox { my ($str,$r,$c) = @_; my $rlen = index($str, "\n"); my $skip = '.' x (($rlen + 1) * $r + $c); my $b = '.' x $rlen; my $f = '.' x $rlen; return $str =~ m{ ^ (?s:$skip) (?s:(?<=(.)$b)?) (?<=(.))? (.) (?=(.))? (?s:(?=$f(.))?) }x; }
As for variable-length look-behinds... you can implement those via revexes!

$_="goto+F.print+chop;\n=yhpaj";F1:eval