2011-01-07 15 views
8

¿Por qué consigo los valores de "$ n" y "m $" después de borrar los respectivos tabla de símbolos-entradas?la tabla de símbolos: borrar entradas

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

Respuesta

10

Porque la tabla de símbolos solo se usa en tiempo de compilación (o mediante referencia simbólica). El valor global de $Foo::{...} se referencia directamente mediante el código compilado, de modo que la entrada de la tabla de símbolos que ya no está presente no tiene ningún efecto.

Cuestiones relacionadas