for better general understanding, I recommend Advanced Perl Programming by Sriram Srinivasan, that book helped me very much.
Specially about your question: There are many ways how to initiate instances of classes, for instance:
- blank instance, initialized just by calling setter methods
- with hardcoded default values
- with values specified by argument of new method
- combination of previous 2 concepts
- new method calls init method
- etc., typically with usage of inheritance
I think the point is to design it in way, which satisfies your exact requirements.