So if Perl prototypes are so critically borked, and this was known in 1999 when Tom C wrote the article, why does my 5.8 perlsub documentation from 2002 imply they are a good thing?

Where does persub imply they are a good thing for general use? It seems pretty unbiased to me. It tells what they do and what they are good for. It goes so far as to tell the primary purpose for them:

. . . the intent of this feature is primarily to let you define subroutines that work like built-in functions . . .

I agree that the docs could be better in pointing out the hazards, but I don't think they are endorsing general use either.

Besides, I wouldn't go as far as to say they are "borked." They just aren't "prototypes" in the sense that people with experience in other languages generally think of prototypes. That's where the breakdown really occurs because, in other languages, prototypes aren't just good; they are often required. In Perl, what we call "prototyping" is a useful language feature and necessary for things like making inlinable constant subs (rare), subs that act like builtins (rarer), and creating new syntax (rarest.) The downside is that the feature was poorly named and, as a result, people end up slapping them on every sub they write.

-sauoq
"My two cents aren't worth a dime.";

In reply to Re: Re: Re: Re: Re: passing subroutine args as a hash: why not? by sauoq
in thread passing subroutine args as a hash: why not? by Willard B. Trophy

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.