http://www.perlmonks.org?node_id=847953


in reply to Checking for Presence of Optional Attribute in Moose Object

I'm not an expert in Moose, but looking at it makes me wonder why you are referencing it. I took the reference to age out of the sub.
sub show_person { my $self = shift; return $self->name(); }
If it's not required, then it wasn't necessary to return it, at least to my way of thinking. My logic could be off, which happens frequently, but here's the code that I ran. It returns "Bob" with no warnings.
package Person; use Moose; has 'name' => ( is => 'ro', isa => 'Str', required => 1); has 'age' => ( is => 'ro', isa => 'Str'); sub show_person { my $self = shift; return $self->name(); } __PACKAGE__->meta->make_immutable; no Moose; 1; my $person = Person->new(name => "Bob"); print $person->show_person(), "\n";