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";