|Perl: the Markov chain saw|
Re^3: Merge log files causing Out of Memory (just a note on ampersand)by afoken (Canon)
|on Aug 26, 2016 at 06:20 UTC||Need Help??|
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.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)