I've used this kind of technique over and over in my Perl projects. I go one step further and in addition to logging the mistake, I make it a hard error by throwing an exception (or using confess) so I get a full stack trace so I can see how things got that way. I sometimes use the idiom $obj->$method, so it's not always clear how the incorrect (typod) method name happened by looking only a single stack frame up.
It would be nice if perl had a 'use strict qw(methods);' mode for detecting as many of these issues as possible at compile time (of course you'd also have to be disciplined about declaring variable types) instead of having to deferr them to run-time.
I usualy put that kind of AUTOLOAD into the base class for all my objects.
As far as using AUTOLOAD to do anything else I usualy avoid it as it can make for harder to maintain and understand code in my opinion. There are some places where it can be very useful but I don't find myself using it too frequently (more often I will use code generation for refactorable syntax).
Kyle
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.