Actually there is no memory leak in your code. You're redeclaring $hash_ref inside the inner block, and it falls out of scope after the last curly bracket. The fact that a variable by the same name has been declared at a broader scope too is irrelevant. The broader-scoped $hash_ref is never being assigned anything, as it is masked by the inner-scoped $hash_ref.
Now on the other hand, if you made an assignment to $hash_ref without declaring it at the inner scope, after the last curly bracket $hash_ref wouldn't fall out of scope, and the reference count wouldn't drop to zero until the broad-scoped $hash_ref lexical falls out of scope too... in this case at the end of the program.
This isn't a memory leak unless you lose track of $hash_ref without letting it fall out of scope somehow.
Dave
In reply to Re: Memory leaks and reference counting within Perl.
by davido
in thread Memory leaks and reference counting within Perl.
by DigitalKitty
For: | Use: | ||
& | & | ||
< | < | ||
> | > | ||
[ | [ | ||
] | ] |