2011-01-07 117 views
8

为什么在删除相应的符号表条目之后从“$ 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 

回答

10

因为符号表仅用于编译时(或通过符号引用)。作为$Foo::{...}的值的glob被编译的代码直接引用,所以不存在的符号表项不起作用。