2011-01-07 8 views
8

Perché ottengo i valori da "$ n" e "$ m" dopo aver eliminato le rispettive voci tabella-simbolo?Tabella simboli: eliminazione voci

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

risposta

10

Poiché la tabella dei simboli viene utilizzata solo in fase di compilazione (o tramite riferimento simbolico). Il valore globale di $Foo::{...} viene fatto riferimento direttamente dal codice compilato in modo che la voce della tabella dei simboli non più presente non abbia alcun effetto.