Regarding the flip-flop operator in scalar context, there is a subtle difference between the double-dot and triple-dot version.
The double-dot version evaluates the right-expression immediately after the left-expression unlocks the operator as true.
The triple-dot version waits until the next re-evaluation of the flip-flop operator before it evaluates the right-expression.
For example, try these on the shell:
echo "123\n2\n3\nxxx\n1\n2\n3" | perl -lne 'if (/1/.../3/) { print
+ $_ }'
echo "123\n2\n3\nxxx\n1\n2\n3" | perl -lne 'if (/1/../3/) { print
+$_ }'
In the case of the OP, the triple-dot version is preferred.