2011-01-07 111 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被編譯的代碼直接引用,所以不存在的符號表項不起作用。