$-[0] is the offset of the start of the last successful match. $-[n] is 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 $_, $-[0], $+[0] - $-[0] . Similarly, $n coincides with substr $_, $-[n], $+[n] - $-[n] if $-[n] is defined, and $+ coincides with substr $_, $-[$#-], $+[$#-] - $-[$#-] . One can use $#- to find the last matched subgroup in the last successful match. Contrast with $#+ , the number of subgroups 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. $-[0] is the offset into the string of the beginning of the entire match. The nth element of this array holds the offset of the nth submatch, so $-[1] is the offset where $1 begins, $-[2] the offset where $2 begins, and so on.
After a match against some variable $var:
* $` is the same as substr($var, 0, $-[0])
* $& is the same as substr($var, $-[0], $+[0] - $-[0])
* $' is the same as substr($var, $+[0])
* $1 is the same as substr($var, $-[1], $+[1] - $-[1])
* $2 is the same as substr($var, $-[2], $+[2] - $-[2])
* $3 is the same as substr($var, $-[3], $+[3] - $-[3])作者: 2gua 时间: 2008-08-29 08:26
看看这儿:http://bbs.chinaunix.net/thread-769567-1-1.html作者: forlorngenius 时间: 2008-08-29 13:15
这些东西用到再查。