Perl 正则表达式变量 $+{name} 和 $-{name} 的区别
Difference in Perl regex variable $+{name} and $-{name}
当 Perl 正则表达式变量 $+{name}
和 $-{name}
都用于引用来自 Perl statement/expression 代码的同一个正则表达式组时,它们有什么区别?
而 $+{name}
保存 name
引用的捕获子字符串
作为标量值,$-{name}
指的是 数组 ,其中包含捕获
组名称。
这是一个小例子:
#!/usr/bin/perl
use strict;
use warnings;
'12' =~ /(?<foo>\d)(?<foo>\d)/; # '1' and '2' will be captured individually
print $+{'foo'}, "\n"; # prints '1'
for (@{$-{'foo'}}) { # $-{'foo'} is a reference to an array
print $_, "\n"; # prints '1' and '2'
}
由于$+{name}
只能保存一个标量值,所以它被赋值
到捕获组的第一个(最左边)元素。
当 Perl 正则表达式变量 $+{name}
和 $-{name}
都用于引用来自 Perl statement/expression 代码的同一个正则表达式组时,它们有什么区别?
而 $+{name}
保存 name
引用的捕获子字符串
作为标量值,$-{name}
指的是 数组 ,其中包含捕获
组名称。
这是一个小例子:
#!/usr/bin/perl
use strict;
use warnings;
'12' =~ /(?<foo>\d)(?<foo>\d)/; # '1' and '2' will be captured individually
print $+{'foo'}, "\n"; # prints '1'
for (@{$-{'foo'}}) { # $-{'foo'} is a reference to an array
print $_, "\n"; # prints '1' and '2'
}
由于$+{name}
只能保存一个标量值,所以它被赋值
到捕获组的第一个(最左边)元素。