Moose поддерживает значения по умолчанию для атрибутов, например:
has 'foo' => ( is => 'rw', isa => 'Int', default => 42 );
Но если вы не хотите идти по маршруту Moose, более простой способ достижения желаемого:
sub new {
my ( $package, %config ) = @_;
my %defaults = ( x => 'a', y => 'b' );
my $self = { %defaults, %config };
# error checking here
return bless $self, $package;
}
Поскольку указание одного и того же ключа хеширования дважды при инициализации хэша приведет к засорению первого ключа, любые ключи в %config
просто переопределяют ключи в %defaults
.