加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 为什么变量仍然绑定

发布时间:2020-12-15 23:22:38 所属栏目:大数据 来源:网络整理
导读:运行: $t = 3;{ tie $t,'Yep';} # Expect $t to become untied here.print $t;package Yep;sub TIESCALAR { bless {},'Yep';}sub UNTIE { print "UNTIEn";}sub DESTROY { print "DESTROYn";} 输出是: Can't locate object method "FETCH" via package "Y
运行:

$t =  3;
{
    tie $t,'Yep';
} # Expect $t to become untied here.
print $t;

package Yep;

sub TIESCALAR {
   bless {},'Yep';
}

sub UNTIE {
   print "UNTIEn";
}

sub DESTROY {
   print "DESTROYn";
}

输出是:

Can't locate object method "FETCH" via package "Yep" at a.pl line 5.
DESTROY

EXPECTED输出是:

DESTROY
3

我想仅在tie所在的作用域的持续时间内绑定变量$t.超出范围,它必须与tie之前的行为相同.因此,我将绑定绑定到块中,并期望在到达块结束时调用解开(就像’local’,其中值在块结束时恢复,但对于绑定变量,我期望行为恢复(解开$t) )).注意$t还没有超出范围.

解决方法

至于全新的问题,

在进行这些更改的范围时,不会自动撤消对变量的更改

my $t = 3;

{
   $t = 4;
}

print "$tn";  # 4,not 3.

当改变是添加领带魔法时也是如此.您可以使用解开来移除魔法,但最好只使用新变量.

my $t = 3;

{
   tie my $t,'Yep';
} # Tied variable destroyed here.

print "$tn";  # 3.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读