看到这些古怪的符号却不知道他们代表什么,怎么办?查perldoc perlvar!
$`也叫$PREMATCH,指字符串中正则匹之前的部分;
$' 也叫$POSTMATCH,指字符串中正则式之后的部分;
不过它们都可能带来性能上的问题,因此推荐使用@-作为替换。
@-也叫@LAST_MATCH_START, 它是一个list, 记录最后一次正则匹配开始的位置。
$-[0]就是上一次匹配位移量的起始位置。
用@-可以替换之前讲的$`和$':
$`
is the same assubstr($var, 0, $-[0])
$&
is the same assubstr($var, $-[0], $+[0] - $-[0])
$'
is the same assubstr($var, $+[0])
$1
is the same assubstr($var, $-[1], $+[1] - $-[1])
$2
is the same assubstr($var, $-[2], $+[2] - $-[2])
$3
is the same assubstr($var, $-[3], $+[3] - $-[3])
下面这段代码可以反映
运行结果:
#perl re_var.pl
ads
dab
4
4
10
iiii
iiii