sub new { my $class_or_objref = shift; my $ref_class = ref $class_or_objref; # true if an object reference my $object_reference; if ($ref_class) { # build object reference from existing object attributes # and supplied @_ arguments. } else { # build object reference for class from supplied @_ arguments. } return $object_reference; } #### sub new { my $classname_or_objref = shift; return ref $classname_or_objref ? $classname_or_objref->new_clone (@_) : $classname_or_objref->new_pristine(@_) ; }