I've updated my posting to limit the "avoid the ampersand" rule to function calls.

just means that &get_dirs receive the current @_ even if no args are specified

Exactly for this reason. &function; has this surprising behaviour.

The programmer must be aware of this

Correct. The programmer must be aware of this, because it is nastily surprising behaviour due to backwards compatibility with Perl 4. In other words: Don't expect a novice to understand what happens here.

Compare to what we tell our little children: "Don't touch the knife." ("Don't use ampersands in function calls.") You don't explain an average three-year old the physics of cutting, the medical problems of infections and loss of large amounts of blood, and so on. Later in the life, you or someone else explains the child (or the novice) why knifes (or ampersands in front of function calls) are dangerous, and how knifes (or ampersands in front of function calls) can be useful.

i must dissent on:
&date_calc; and &get_dirs; is Perl4-style. Avoid the ampersand, it usually does not do what you intent to do.
is not Perl4, is perfectly valid Perl5

I never said that &get_dirs; was Perl 4, and I never said it was illegal in Perl 5. I named it Perl4-style, because that's how functions had to be called in Perl 4.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

In reply to Re^3: Merge log files causing Out of Memory (just a note on ampersand) by afoken
in thread Merge log files causing Out of Memory by malokam

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.