in reply to Re: Re: Checking for Valid Dates
in thread Checking for Valid Dates

Altough the ampersand is not mandatory, I use it, in order to read my code easier. In my opinion it belongs to the structured perl programming style.

I would disagree. I think it is clumsy, confusing, needless and potentially problematic:

From perlfaq7:

What's the difference between calling a function as &foo and foo()?

When you call a function as `&foo', you allow that
function access to your current @_ values, and you by-pass
prototypes.  That means that the function doesn't get an
empty @_, it gets yours!  While not strictly speaking a
bug (it's documented that way in the perlsub manpage), it
would be hard to consider this a feature in most cases.

When you call your function as `&foo()', then you do get a
new @_, but prototyping is still circumvented.

Normally, you want to call a function using `foo()'.  You
may only omit the parentheses if the function is already
known to the compiler because it already saw the
definition (`use' but not `require'), or via a forward
reference or `use subs' declaration.  Even in this case,
you get a clean @_ without any of the old values leaking
through where they don't belong.

Tony

Replies are listed 'Best First'.
(tye)Re2: Checking for Valid Dates
by tye (Sage) on Jan 05, 2001 at 22:38 UTC

    Yes and no. Some of that is correct, some of it is misleading. I humbly suggest you read (tye)Re: A question of style which I think clears up some of this.

    It is particularly unfortunate that the FAQ suggests using "foo()" since all-lowercase function names is the one case where I can recommend using "&foo()". It also overlooks the real potential for good error checking by intentionally leaving off the parens (for functions with mixed-case names).

            - tye (but my friends call me "Tye")

      Yes and no. Some of that is correct, some of it is misleading.

      Well, as all I posted was an extract from perlfaq7 from the bundled documentation with Perl, I would suggest that you submit a patch for the bits you think are misleading...

      Thanks,

      Tony