As I started to use CPAN, one of the hardest things to learn was, of the many modules that claim to implement the same (or similar) feature set, which is considered the best (stable, actively supported, secure) module for the task. It has taken me lots of trial and error, and I am still gleening best practices everyday.
In no particular order, some of the CPAN modules I consider essential, by which I mean that nearly every script or project I develop uses many from this list. (NOTE that I do not include any of my own CPAN modules here.)
- Carp (part of the standard Perl install)
- Class::Accesssor::Fast (or Object::Tiny)
- Rose::DB::Object (and DBI of course)
- Getopt::Long (for cli scripts)
- Pod::Usage (ditto)