Why can't I access lexical variables via typeglob?
I don't understand why the example below is given below (test 2). Why can't I access the bb variable from the * bb ball?
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");
Output signal
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
Under perl 5.16.0
thank
+3
Tiago Peczenyj
source
to share
1 answer
Lexical variables (created with my
) are not part of the symbol table, so they cannot be accessed with globes. See Also Symbol Tables and Globes .
+7
choroba
source
to share