Every project normally starts out with a thorough study of application specifications and design. Provided design is done properly, you shouldn’t have to deal with such issues as ‘multi-purpose’ modules that are nothing but a ‘package’ crammed with as much functionality as only possible. Modules (in Perl specifically) inherently should serve the purpose of separating one piece of functionality from the rest of your program. Not to mention advantages of software reuse.. but that’s a different subject anyways ;).
I have found a number of posts made by other monks that speak to this affect:
There’s also a good book that I might suggest you look into for ideas on proper software design: