++ for this very interesting post.

I guess it is all a matter of design choices. The my variables are not specially made for the purpose to release memory when they go out of scope. May be erroneously some of us may have thought/hoped/wished they were, but as you clearly showed, they are not.

Rather their design is to encapsulate them within their scope and not "pollute" the variable-namespace outside of it. And they do that very well.

As they are mostly used in loops and sub-routines, there is a good argument to be made in favour of speed above memory-consumption. You really do not want your tight running loop to get slowed down by repeated (de-)allocation of memory!

Also, I have been using Perl for many years now and never got any of the memory-issues you mention. The examples you give are correct, but --IMO-- marginal or degenerate situations. Still we should not be blind for these issues and if you have a memory hungry program, you indeed may have to program very careful so as not to exhaust your memory. Thank you for reminding the Monastery of this!

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James


In reply to Re: No garbage collection for my-variables by CountZero
in thread No garbage collection for my-variables by betterworld

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.