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

perl – 为什么我不能通过typeglob访问词法变量?

发布时间:2020-12-16 06:06:33 所属栏目:大数据 来源:网络整理
导读:我不明白为什么下面的例子失败了(测试2).为什么我无法从* bb glob访问变量bb? use Test::More tests = 4;$aa = 1;my $bb = 2; # HERE!local $cc = 3;our $dd = 4;is(${*aa},1,"$*aa should be 1");is(${*bb},2,"$*bb (my) should be 2");is(${*cc},3,"$*
我不明白为什么下面的例子失败了(测试2).为什么我无法从* bb glob访问变量bb?

use Test::More tests => 4;

$aa = 1;
my $bb = 2;   # HERE!
local $cc = 3;
our $dd = 4;

is(${*aa},1,"$*aa should be 1");
is(${*bb},2,"$*bb (my) should be 2");
is(${*cc},3,"$*cc (local) should be 3");
is(${*dd},4,"$*dd (our) should be 4");

输出是

1..4
ok 1 - *aa should be 1
#   Failed test '*bb (my) should be 2'
#   at untitled line 10.
#          got: undef
#     expected: '2'
# Looks like you failed 1 test of 4.
not ok 2 - *bb (my) should be 2
ok 3 - *cc (local) should be 3
ok 4 - *dd (our) should be 4

根据perl 5.16.0

谢谢

解决方法

词法变量(使用my创建的变量)不是符号表的一部分,因此无法通过globs访问它们.另见 Of Symbol Tables and Globs.

(编辑:李大同)

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

    推荐文章
      热点阅读