|( #3333=superdoc: print w/replies, xml )||Need Help??|
No! Perl uses reference counting, so an element of storage is eligible for garbage collection only when its reference count falls to zero. When you create the %result variable with my, its reference count is one. When you create a reference to it and push that reference onto @array, the reference count of the memory holding the data is incremented to 2. Then, when the for loop
This is one of the features of Perl that make it a joy to work with. As a general rule, Perl is designed to “do the right thing”, which in this case means keeping the data around as long as it’s needed. Reference counting ensures that the data is still valid and available when it is later accessed via the @array variable.
But — try it to see!
Hope that helps,
Update 1: Improved wording slightly.
In reply to Re^3: Accessing HASH pushed into @array ('strict refs' in use error)