小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

レキシカル変数の消滅タイミング

普通、レキシカル変数はレキシカルスコープを抜けると消滅します。
しかし、リファレンスの参照が残っていると消滅しない。

my $xxx;
{
    my $data = ('aaa, bbb, ccc');
    my $data2 = ('xxx, yyy, zzz');
    print $data, "\n";
    print $data2, "\n";
    $xxx = \$data;
}
# $data2は消滅する。しかし、$dataは$xxxに参照があるので消滅しない。
print $$xxx, "\n"; #aaa, bbb, ccc を表示
$xxx = undef; #これで$dataは消滅し、ガベージコレクションの対象となるらしい。