Theoretically, if you called $obj->option('some_random_option'), option needs to handle it anyway. So I don't see much of a problem with that tactic. It means there is only a single point at which one needs to validate the option is valid.

It sounds like option isn't validating what is passed in - that's a seperate issue, and has absolutely nothing to do with AUTOLOAD.

What does have something to do with AUTOLOAD is the fact that it's not dealing with DESTROY. The simplest way to deal with that is to create a DESTROY method:

{ package Foo::Bar; sub DESTROY {} }
Once you've done this, DESTROYs won't be dispatched to AUTOLOAD at all.

I don't think AUTOLOADs are necessarily bad, but I do see that they give a lot of temptation to develop badly. Right up there with eval STRING and goto. (That AUTOLOAD is often paired with goto is another issue.) Used appropriately, you can really take advantage of the dynamic nature of perl and provide syntactic sugar that you just can't do in any many other languages.


In reply to Re: removing someone elses AUTOLOAD by Tanktalus
in thread removing someone elses AUTOLOAD by water

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.