2011-01-07 16 views
8

Dlaczego otrzymuję wartości z "$ n" i "$ m" po usunięciu odpowiednich wpisów w tabeli symboli?Tablica symboli: usuwanie wpisów

#!/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 

Odpowiedz

10

Ponieważ tabela symboli używana jest tylko w czasie kompilacji (lub poprzez odniesienie symboliczne). Glob o wartości $Foo::{...} odwołuje się bezpośrednio przez skompilowany kod, więc wpis nieaktualnej tablicy symboli nie ma żadnego efektu.

Powiązane problemy