0

나는 perl로 데몬을 작성하려고합니다. 이제이 데몬은,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; 
} 

내 질문은 위로부터 다음과 같은 코드가 수행하는이 사라와 b가 범위를 벗어나면 그것은 청소됩니까 %의 기준?

+0

OT : 그건'my % a =();'이어야합니다. 이것은'my % a;'를 작성하는 실릴 방법 일뿐입니다. 항상'use strict; '경고를 사용하십시오; – ikegami

+0

자, 가세요. 하지만 내가 말하는 것에 의미가 있나? 나는 여기에 기억이 새고 있을지 모른다는 걱정이된다. –

답변

3

bboo와 요소 스칼라 보유 %a에 대한 참조를 유지하는 아논 해시에 대한 참조 $newdata의 값을 반환한다.

b에 의해 반환 된 값이 저장되지 않은 경우 아무 것도 $newdata 값을 참조하지 않으므로 해제되므로 익명 해시를 참조하지 않으므로 해지되어 아무 것도 스칼라를 참조하지 않습니다. 키가 boo 인 요소이므로 해제됩니다.

주기가 없습니다. 누설 없음.