in reply to new() is just a constructor by convention right?

Discussed at some length in Curious Constructor Syntax.

The short answer is that new returns a newly blessed object by convention. You could as easily write something that doesn't always return a new object. Consider:

package Singleton; ... my $singleton = undef; sub new { my $pkg = shift; $singleton ||= bless {}, $pkg; } ... my $frob = new Singleton();