in reply to More about module
Here is a rule I try to follow: If you think you will use a sub in more than two scripts, turn it into a module. Chances are you will probably use it more that you expect.
I don't use perl for web work so my point of view may be a little different but this is what I do.
I create a module CompanyX and make sub modules as I need them for all the interfaces I need at CompanyX:
Example:
CompanyX::Lotus_Notes
CompanyX::Oracle
CompanyX::file_converter
Now I have a module with all of companyX's interfaces. if the company changes its interface or switches db all I have to do is change either the db link in the script or change the module and all the scripts will be updated.
One other thing no-one mentioned. By using modules all of your simular code is in one location and you can call them from anywere, with include files you have to know the path to the include file. This is not a problem if you are storing all of your files in one location, but you become location dependent.
One other thing, if your code becomes usefull module form will make it easier to share.
Just my long winded 4cents