I did ask for interesting solutions. It's going to take me a while to understand how this works. I found in perlvar a description of @- as being an array of the indexes of the matches. Thanks for posting.
$- is the offset of the start of the last successful match. $-[n] i
+s the offset of the start of the substring matched by n-th subpattern
+, or undef if the subpattern did not match.
Thus, after a match against $_ , $& coincides with substr $_, $-, $
++ - $- . Similarly, $n coincides with substr $_, $-[n], $+[n] -
+ $-[n] if $-[n] is defined, and $+ coincides with substr $_, $-[$#-],
+ $+[$#-] - $-[$#-] . One can use $#- to find the last matched subgrou
+p in the last successful match. Contrast with $#+ , the number of sub
+groups in the regular expression. Compare with @+ .
This array holds the offsets of the beginnings of the last successful
+submatches in the currently active dynamic scope. $- is the offset
+ into the string of the beginning of the entire match. The nth elemen
+t of this array holds the offset of the nth submatch, so $- is the
+ offset where $1 begins, $- the offset where $2 begins, and so on.