Design the module's interface first. [Interfaces]
Place original code inline. Place duplicated code in a subroutine. Place duplicated subroutines in a module. [Refactoring]
Use three-part version numbers. [Version Numbers]
Enforce your version requirements programmatically. [Version Requirements]
Export judiciously and, where possible, only by request. [Exporting]
Consider exporting declaratively. [Declarative Exporting]
Never make variables part of a module's interface. [Interface Variables]
Build new module frameworks automatically. [Creating Modules]
Use core modules wherever possible. [The Standard Library]
Use CPAN modules where feasible. [CPAN]