Clear questions and runnable code get the best and fastest answer |
|
PerlMonks |
Re^3: Do subroutine variables get destroyed?by Marshall (Canon) |
on May 09, 2016 at 22:10 UTC ( [id://1162578]=note: print w/replies, xml ) | Need Help?? |
Yes, that is correct. Consider what happens with my re-coded sub a1, The first call makes a hash and returns a reference to it. The second call also makes a hash and returns a reference to it. However after the second call, the reference to the first hash is now "lost" as it was replaced by a reference to the second hash that was generated. The memory for the first hash is then recylced because its reference count is zero and there is no way for the program to access that data anymore. Of course in a "real" example, probably there are some parameters to sub a1 so that it generates a different kind of hash on the second call. One reason to do this might be in a GUI interface where a1() winds up being say a "button factory". If the references returned are kept in scope, say in an array, then each button is a distinct thing. For the most part, Perl memory management does the "right thing" under the covers and is transparent to you. There are of course special considerations with certain types of data structures and when making truly huge structures in the sub.
In Section
Seekers of Perl Wisdom
|
|