use Foo; my ($bar) = @ARGV; my $foo = Foo->new( bar => $bar ); #### package Foo; use Moose; has bar => (is => "ro", default => "whatever"); #### package Foo; use Moose; has a => (is => "rw"); sub BUILD { my($this, $args)=@_; $this->bar("whatever") unless defined $args->{bar}; }