質問

それぞれのシンボルテーブルエントリを削除した後、「$ 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
役に立ちましたか?

解決

シンボルテーブルは、コンパイル時間でのみ(またはシンボリックリファレンスを介して)使用されるためです。の価値であるグローブ $Foo::{...} コンパイルされたコードによって直接参照されるため、ロンガーが存在するシンボルテーブルの入力が効果がありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top