Clear questions and runnable code get the best and fastest answer |
|
PerlMonks |
Re: Re: Re: undefining one slot of a typeglobby gmpassos (Priest) |
on Feb 24, 2004 at 20:00 UTC ( [id://331507]=note: print w/replies, xml ) | Need Help?? |
"Symbol::gensym does create its symbols in the Symbol:: package, but then removes them from the package, so when a returned symbol goes out of scope it does get garbage collected"
Are you sure about that? I can guarantee to you that it won't make garbage collection! First because we don't have any note about that in the POD of Symbol, and because gensym() just return a reference of a GLOB in the package Symbol::, and any GLOB reference doesn't have scope, since it's a GLOBAL "object". The best way is to see the source of gensym():
Soo, when the $ref goes out, the GLOB still exists in the package Symbol::. Here's a test of that: And the output:
About the undef of types, well, this was already discussed here in PM, and is all about memory usage. If we make a undef in all the different types of a GLOB to clean a package from the memory, we will free much more memory than just make a undef *GLOB. And the memory difference is big. In my tests after 1000 executions I have the interpreter with 8Mb, and with the simple undef *GLOBS I have 150Mb!
Graciliano M. P.
In Section
Seekers of Perl Wisdom
|
|