8

それぞれのシンボル テーブル エントリを削除した後、"$n" と "$m" から値を取得するのはなぜですか?

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

1 に答える 1

10

シンボル テーブルはコンパイル時 (またはシンボリック参照を介して) にのみ使用されるためです。の値であるグロブは$Foo::{...}、コンパイルされたコードによって直接参照されるため、存在しなくなったシンボル テーブル エントリは無効になります。

于 2011-01-07T08:13:46.340 に答える