符号表:删除条目
问题描述:
为什么在删除相应的符号表条目之后从“$ n”和“$ m”得到值?符号表:删除条目
#!/usr/bin/env perl
use warnings;
use 5.012;
package Foo;
our $n = 10;
our $m = 20;
delete $Foo::{'n'};
delete $Foo::{'m'};
say $n; # 10
say $m; # 20
答
因为符号表仅用于编译时(或通过符号引用)。作为$Foo::{...}
的值的glob被编译的代码直接引用,所以不存在的符号表项不起作用。