I've dealt with the same problem many times, and for what it's worth my main criteria are:
Can I subclass it? Can I clone it? Can I mock it with T:M:O? Will my eyes burn when I call its constructor?
Incoherent or missing documentation often points to bad engineering habits, and you don't want to poison your codebase unnecessarily.
You may only need to deploy it under Ubuntu Marbly Muskrat now, but what if you become an expert in this only to find that it doesn't work on your new client's XServe? (Some things are worth patching and so on, but it's still a big fat demerit.)
For the above reason, but with more variety.
This isn't universally important, but for a module that does something in a changing environment (e.g. parsing PDFs) or in an infinitely complex problem area (e.g. object-relational mapping) it means a lot if people are working to make the module better. Extra points for fast bug turnaround and for multiple people working together on it; the former means your patches will probably be used, the latter means the code has a better chance of being readable (should the need arise).
Even if it's slightly worse, I like the convenience of a core module. But if it's a lot worse, forget it and make the first test in your suite do a bunch of use_ok()'s.
This is completely subjective, but still: ask your local guru or list whether anyone specifically advises against it, and why. There are some widely-used modules that have fundamental design flaws that will really hurt you if you need to grow something big on top of them.
Google searches (especially on PerlMonks) factor in if there's something tricky about the module, in which case I'm mostly concerned with how people explain it and advocate for/against it. I've never factored in Google code searches before, but it's an interesting idea and I might do that the next time the problem comes up.
In reply to Re: How does one choose among modules?
by frostman
in thread How does one choose among modules?
by mr_mischief
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |