The special variable @- is an array that contains the offsets from the start of the string to each match. Consider:
use strict; use warnings; for my $str ('1 2 3', 'a b c', ' a3 b2 c1') { next if $str !~ /\w?([0-9])/; my $mpos = $-[0]; my $cpos = $-[1]; print "Found $1 in '$str' at index $cpos. Overall match started at + $mpos\n"; }
$-[0] accesses the first element of the array - the start of the entire match. $-[1] gives the index of the start of the first capture. The script prints:
Found 1 in '1 2 3' at index 0. Overall match started at 0 Found 3 in ' a3 b2 c1' at index 2. Overall match started at 1
See the perlvar regular expression variables section. You should take a look at perlretut and perlre too.
In reply to Re: position of first matching regex
by GrandFather
in thread position of first matching regex
by techtaskers.com
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |