our @ofs = (0); push @ofs, pos while $string =~ /(\n)/g; #### sub ofs2line { my $offset = shift; for (0 .. $#ofs) { return ($_, $offset-$ofs[$_-1]) if $offset < $ofs[$_]; } return ();