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
War es hilfreich?

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
scroll top