A template copy of your code remains because it is used when creating the value to be assigned to $code. That template does not contain a copy of @arr. Also, the value of $code is GCed. Also, when $code was assigned, it didn't recieve a copy - it got a pointer to the current binding of @arr at the time. That pointer is also GCed and if the value in @arr has no more references, it also is GCed.
In short, your code will behave itself. The now unused memory will be known to the perl interpreter as unused memory and it is now up to perl about whether it will return it to the operating system or not. I'm fuzzy on this but I recall others saying that some operating systems (like Windows) allow perl to return memory and perhaps others don't allow perl to return the memory. In any case, if you were to need that memory for other data in your program, it would be re-used for whatever that new use was.
In reply to Re: Lost anonymous subs
by diotalevi
in thread Lost anonymous subs
by kappa
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |