diff options
| -rw-r--r-- | incdec.pm | 60 | 
1 files changed, 52 insertions, 8 deletions
| @@ -1,6 +1,8 @@  use strict;  use warnings; +# use 5.010; +  package incdec;  sub incdec { @@ -13,8 +15,46 @@ sub incdec {  	# If point is within a number, move it to ensure we match the whole number  	# rather than only part of its digits. +	my $final_line = '';  	my $line_part = $line; -	while (1) { +	# my $previous_point_position = $point_position; +	my $previous_point_position = 0; +	$final_line .= substr($line_part, $previous_point_position); +	# while (1) { +	# for (my $i = 0; $i < 3; $i++) { +	# while ($point_position < length($line_part)) { +	# # do { +	# 	$line_part =~ /(\d+)/; +	# 	say "$-[0]:$+[0]...$line_part..."; +	# 	if ($-[0] <= $point_position && $point_position < $+[0]) { +	# 		$point_position = $-[0]; +    # +	# 		last; +	# 	} +    # +	# 	# if ($point_position >= length($line_part)) { +	# 	# 	last; +	# 	# } +	# 	# elsif ($point_position >= $+[0]) { +	# 	if ($point_position >= $+[0]) { +	# 		# repeat loop +	# 		$final_line .= substr($line, $previous_point_position, $point_position + 1); +	# 		$line_part = substr $line_part, $point_position; +	# 		next; +	# 	} +	# 	else { +	# 		last; +	# 	} +    # +	# 	# $line_part = substr $line_part, $point_position; +	# } +	# } while ($point_position < length($line_part)); + +	my $line_start = ''; +	# while ($line_part =~ /(\d+)/) { +	while ($point_position < length($line_part)) { +		my $len = length($line_part); +		# print "p[$line_part]p{$point_position:$len}";  		$line_part =~ /(\d+)/;  		if ($-[0] <= $point_position && $point_position < $+[0]) {  			$point_position = $-[0]; @@ -23,27 +63,31 @@ sub incdec {  		}  		if ($point_position >= $+[0]) { -			# repeat loop +			$line_start .= substr($line_part, $previous_point_position, $+[0]); +			$line_part = substr($line_part, $+[0]); +			$previous_point_position = $point_position; +			$point_position = 0; +  			next;  		}  		else {  			last;  		} - -		$line_part = substr $line_part, $point_position;  	}  	# my $line_part = substr $line, $point_position;  	$line_part =~ s/(\d+)/$1+1/e; -	my $line_excluded = substr $line, 0, $original_point_position; +	my $line_excluded = substr $line_start, 0, $original_point_position; +	# print "x[$line_excluded]x[$line_part]x"; -	# $line = $line_excluded . $line_part; +	$line = $line_excluded . $line_part; -	# return $line; +	return $line; -	return $line_part; +	# return $line_part; +	# return $final_line;  }  1; | 
