Что означает специальная переменная perl $- [0] и $+ [0]

Я хочу знать значение специальных переменных perl $-[0] и $+[0]

Я искал googled и обнаружил, что $- представляет количество строк, оставшихся на странице, и $+ представляет последний бит, соответствующий последнему шаблону поиска.

Но мой вопрос в том, что означает $-[0] и $+[0] в контексте регулярных выражений.

Сообщите мне, требуется ли образец кода.

Ответ 1

Смотрите perldoc perlvar о @+ и @-.

$+[0] - это смещение в строку конца всего совпадения.

$-[0] - это смещение начала последнего успешного совпадения.

Ответ 2

Это оба элемента из массива (обозначаются квадратными скобками и числом), поэтому вы хотите искать @- (массив), а не $- (несвязанная скалярная переменная).

Отклонение

perldoc perlvar 

объясняет специальные переменные Perl. Если вы ищете там для @- вы найдете.

$-[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.

Ответ 3

Добавление примера для лучшего понимания $-[0], $+[0]

Также добавление информации о переменной $+

use strict;
use warnings;

my $str="This is a Hello World program";
$str=~/Hello/;

local $\="\n"; # Used to separate output 

print $-[0]; # $-[0] is the offset of the start of the last successful match. 

print $+[0]; # $+[0] is the offset into the string of the end of the entire match. 

$str=~/(This)(.*?)Hello(.*?)program/;

print $str;

print $+;                    # This returns the last bracket result match 

Вывод:

D:\perlex>perl perlvar.pl
10                           # position of 'H' in str
15                           # position where match ends in str
This is a Hello World program
 World