in reply to Writing a web message board from scratch
Sit down with paper and pen (and posibly a colleague of yours). Talk yourself through the usage of the future system. Go through everything that should be possible and how.
Whenever you pronounce a noun, put it down as a potential class. If you also hear yourself mentioning that the noun must be able to verb, then you write down this as a potential method of the class.
In Perl you're not forced to use objects and very often you will use procedural code to handle entities. These entities will become objects implemented in you class modules.
Implement the skeletons for the classes and repeat the verbal session. Ask yourself if your classes really represent the nouns you need in the system and if they are able to perform all the verbs that must be
done. Redo. ;-)
Another thing to think about is a way to handle the numerous constant values and common Perl subs that must be shared by your (presumably) large number of Perl scripts.
Decide the strategy for a/the database backend.
Everything went worng, just as foreseen.