On Wed, 28 Jan 2004 03:06:55 +0000, bill wrote:
> In <> (Jay Tilton)
> writes:
>
>>See if something in CPAN's Class:: hierarchy excites you.
>>Class::Accessor, Class::Struct, Class::MethodMaker, Class::MakeMethods,
>>Class::Contract, . . . .
>
> CPAN is great (and the CPAN module is God's gift to humanity), but CPAN
> has one huge flaw. I don't know how to fix this flaw, but it is very
> real: CPAN offers no way to distinguish the wheat from the chaff. If
> you search CPAN for the keyword 'Class' you'll get 400+ hits. After
> 10-15 minutes of scanning this list, you may conclude that 15-20 modules
> are relevant to your interest (and miss 1 or 2 you *should* be
> considering but aren't because their brief descriptions did not ring
> your bell.) How to narrow down the field? Reading the man pages for 20
> modules, at 10 minutes per page, on average, will take almost 3 hours.
> Assuming you got that far, you may have narrowed the field down to 3-4
> modules. To pick among these would require programming with them for a
> while; you need to determine the solidity of the code and the
> appositeness of the author's high-level design. We are talking at least
> 1-2 days of solid work here... I think this is probably an
> underestimate. This is beginning to approach the time it would take to
> roll one's own, which of course you'll do so brilliantly that you'll
> want to submit it to CPAN, only to make it less likely that anyone will
> use either yours or "competing" modules.
I usually go to
http://search.cpan.org/ *first* and do a search. Some of
the things I look for are:
- complete documentation; if the author can't take the time to explain the
module's interface, then it's not worth my time to use it.
- history/changes; modules that have been around awhile and have been
updated over time are ones that will be around years from now.
- ease of use; if it takes an enormous effort on my part to get what I
want, then I might as well do it all myself. Modules are suppose to make
life easy, not complicated - I can do that on my own, thank you very much
- portable; what's the point of using some modules if the code isn't
portable. That's not to say *all* modules need to be portable. But given
the choice between one that is and one that isn't, I'll go for the
portable one every time.
- task-specific; no need to use a hammer when a fly swatter is in order

If the module is so bloated with "stuff", then, again, I might as
well do it myself. Some modules allow you to import only those methods
you *need*, not the whole stinking thing into the namespace. Given a
choice between a module that allows *me* to decide what methods I want to
use versus one that doesn't, I'll use the one that does.
- word of mouth; nothing beats asking what others have used. Make sure
you get a well rounded view of the module and it's capabilities. Make
sure you get bad reviews - the evil known is better than the evil that's
unknown
Good modules to show what I'm talking about are:
CGI, DBI, LWP, Template Toolkit, Net::SMTP, and Net::FTP.
That's just a few tips for you when searching for "that special module" I
use. I hope you find these tips useful. It might cut your search time
down to about a day - depending on what you want to do
HTH
--
Jim
Copyright notice: all code written by the author in this post is
released under the GPL.
http://www.gnu.org/licenses/gpl.txt
for more information.
a fortune quote ...
Law of the Perversity of Nature: You cannot successfully
<determine beforehand which side of the bread to butter.