符号表:删除条目

sid*_*com 8 perl symbol-table

删除相应的符号表条目后,为什么要从"$ 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
Run Code Online (Sandbox Code Playgroud)

yst*_*sth 10

因为符号表仅在编译时使用(或通过符号引用).作为值的glob $Foo::{...}由编译的代码直接引用,因此不再存在的符号表条目无效.