0

perlでデーモンを書こうとしています。現在、このデーモンには次のコードがあります

sub b {
    my $data;
    if (some condition) {
         $data->{"endsmeet"} = 1;
    } else {
        $data->{"endsmeet"} = 2;
    }

    my $newData = a($data);
}

sub a {
    my ($data) = @_;
    my %a = ();
    my $newData = {
      endsmeet => undef,
    };
    $a{"boo"} = $data->{"endsmeet"};
    $newData->{"endsmeet"} = \%a;
    return $newData;
}

私の質問は上記からのものです. %a の参照はなくなりますか? b が範囲外になるとクリーンアップされますか?

4

1 に答える 1

4

bの値を返します$newdata。これは anon ハッシュへの参照であり、への参照を保持します。%aこれは、キーを持つ要素にスカラーを保持しますboo

によって返された値がb格納されていない場合、 の値を参照するものは$newdata何もないため、解放されます。したがって、anon ハッシュを参照するものは何もないため、解放されるため、 key を持つ要素のスカラーを参照するものはありませんboo。解放されます。

サイクルなし。漏れなし。

于 2013-08-28T01:54:27.493 に答える