# Change within substr (or zero-width on an edge) if( $beg < $end # Not empty || $b == $e # Both empty (identical) || ( $b < $beg && $end < $e ) ) { # Or not on an edge # changes within substr, change length: $e += $dif; }