in reply to Finding length of line if have any position of any char inside line
You could simply precalculate the length of the line when you store its position:
... my $len = pos($string) - $newlines[-1]; push @newlines, [ pos($string), $len ]; ...
Also, you could do a binary search for the starting position instead of starting from the front or the back of the file, or even linearly estimate the position of the line, assuming that you know the average width of a line. Since you need to scan the string for newlines anyway, calculating the average line length is easy and estimating the likely position of the line as a start point for your search is also easy:
my $avg_len = 0; $avg_len = length($string) / 0+@newlines; my $estimated_line = int( $position / $avg_len );
|
|---|