package Obj; use Moose; has 'a', is => 'ro', default => 10; package main; my $obj = Obj->new( a => 10 ); #### sub initialize { my $self = shift; while (my ($key, $value) = splice @_, 0, 2)) { $self->{$key} = $value; } }