note
ysth
A common thing with flipflop is to want to exclude one or both endpoints.
To do this, you need to actually check the scalar value returned by the ..
operator; it will be a number beginning at 1 when the flip condition is
met and increasing once each time thereafter, with an "E0" appended when
the flop condition is met. (False is returned as "".)
<p>
Anyway, here are some examples. Better suggestions greatly encouraged.
<c>
$ cat data
initial
start
interior
end
final
$ # Include both endpoints
$ perl -wlne'print if /start/../end/' data
start
interior
end
$ # Exclude starting point
$ perl -wlne'print if ((/start/../end/) || 0) > 1' data
interior
end
$ # Regex alternative for exclude starting point
$ perl -wlne'print if (/start/../end/) =~ /^(?!1(?!\d))\d/' data
interior
end
$ # Exclude ending point
$ perl -wlne'print if (/start/../end/) =~ /^\d+$/' data
start
interior
$ # Exclude both endpoints
$ perl -wlne'print if (/start/../end/) =~ /^\d+(?<!^1)$/' data
interior
$ # or:
$ perl -wlne'print if (/start/../end/) !~ /^1?$|E/' data
interior
</c>
525392
525392