in reply to class inheritance and new(constructor)

I like to initialize (and create) my fields in the constructor (even if only to undef), so my subclass constructors would look like:

my new { my ($class, ...) = @_; my $self = $class->SUPER::new(...); $self->{...} = ...; $self->{...} = ...; return $self; }

or

use constant IDX_... => Parent::NEXT_IDX() + 0; use constant IDX_... => Parent::NEXT_IDX() + 1; use constant NEXT_IDX => Parent::NEXT_IDX() + 2; my new { my ($class, ...) = @_; my $self = $class->SUPER::new(...); push(@$self, ..., # IDX_... ..., # IDX_... ); return $self; }

depending whether it's a hash- or array-based object.

Nothing requires this, however. I could rely on the fact that non-existant hash and array fields evaluate to undef, but I prefer the self-documenting properties of my method.