in reply to Code reuse and method sharing with OOP / CGI::Application
The combination of #1 and #3 is what I have commonly found myself doing. The #1 part of things allows customization of the CGI::App--like setting up plugins, custom output modes (like a debug page, for example), and choice of template system, as examples. The #3 part of things allows you the flexibility of code reuse and logical factorization. You can make a "Model" module that deals with your data model and access or a "Login" module that has methods for creating users, deleting users, and validating users associated with a given project. The "Model" module could then be used for loading data into a database as well as for web apps. The "Login" module could be used for a local Tk-based app for faster/more interactive data manipulation or data entry. Hopefully, you get the point.
Sean