Howdy,
It's easier if you just search by column:
my $data = do { local $/; <DATA> };
my $p1 = qr(.{1}#);
my $p2 = qr(#);
my $p3 = qr(.{2}#\.);
for my $column (0 .. 80) {
my $start = qr(.{$column});
my $next = qr(.*\n$start);
my $target = qr($start(?=$p1$next$p2$next$p3));
while ( $data =~ m/^$target/mg) {
my $row = () = substr($data,0,pos $data) =~ /\n/g;
print "[row: $row|column: $column]\n";
}
}
__DATA__
#..#.....#.
..#...##...
.#....#..##
#..#....#..
..#...#..#.
.......#.#.
...........
Prints:
[row: 2|column: 0]
[row: 1|column: 1]
[row: 1|column: 6]