2011-01-07 15 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::{...}の値であるグロブは、コンパイルされたコードによって直接参照されるので、存在しないシンボルテーブルエントリは効果を持ちません。

関連する問題