in reply to cpan modules to go through

DBIx::Class comes to mind, it meets at least four of your criteria.

But then I doubt that reading quasi random foreign code helps you greatly improve your programming skills. A much better approach is to write code yourself (and read the documentation if you don't know any further, and ask here when reading the documentation does not help).