Symbol-Tabelle: Löschen von Einträgen
-
30-09-2019 - |
Frage
Warum erhalte ich die Werte von "$ n" und "$ m" nach dem jeweiligen Symbol-table-Einträge zu 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
Lösung
Da die Symboltabelle nur bei der Kompilierung verwendet wird (oder über symbolische Referenz). Die glob, dass der Wert von $Foo::{...}
ist durch den kompilierten Code direkt verwiesen wird, so dass der Nicht-mehr-present Symboltabelleneintrag hat keine Auswirkung.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow