2011-01-07 14 views
8

Warum bekomme ich nach dem Löschen der entsprechenden Symboltabelleneinträge die Werte von "$ n" und "$ m"?Symboltabelle: Einträge löschen

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

Antwort

10

Da die Symboltabelle nur zur Kompilierzeit (oder über symbolische Referenz) verwendet wird. Der Glob, der der Wert $Foo::{...} ist, wird direkt von dem kompilierten Code referenziert, so dass der no-longer-present-Symboltabelleneintrag keine Auswirkung hat.

Verwandte Themen