38、Perl 正则表达式相关特性解析

Perl 正则表达式相关特性解析

1. local 变量的形象类比

local 变量可以类比为一张透明胶片,就像投影仪使用的那种。当你对某个变量使用 local 时,就如同在该变量上覆盖了这张透明胶片,你可以在上面随意书写自己的修改内容。你以及其他查看该变量的对象(如子程序和信号处理程序)都能看到新的值。这些新值会覆盖之前的值,直到所在的代码块最终退出。此时,透明胶片会自动移除,也就意味着自 local 操作以来所做的任何更改都被消除了。

这种类比比“创建内部副本”的说法更接近实际情况。使用 local 并不会真正创建副本,而是在每次访问变量值时,将新值置于检查列表的前面(即遮蔽原始值)。退出代码块时,会移除自代码块开始以来添加的所有遮蔽值。虽然可以手动使用 local 添加值,但我们关注局部化的主要原因在于:正则表达式的副作用变量会自动进行动态作用域设置。

2. 正则表达式的动态作用域

动态作用域与正则表达式密切相关。许多变量(如 $& 表示匹配的文本, $1 表示第一个带括号子表达式匹配的文本)会在成功匹配后自动设置,这些变量在进入每个代码块时会自动进行动态作用域设置。

以下是一个示例:

if ( m/(...)/ )
{
    DoSomeOtherStuff();
    print "the matched text was $1.\n";
}

由于 $1 的值在进入每个代码块时会自动进行动态作用域设置,所以这段代

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值