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

Replies are listed 'Best First'.
Re^2: Checking for Presence of Optional Attribute in Moose Object
by roho (Bishop) on Jul 04, 2010 at 07:02 UTC
    The sample code is only meant to describe the problem. I want to be able to add the optional attribute value to a display line if the attribute is present. The predicate suggestion by FalseVinylShrub and Your Mother solved the problem. Many thanks.

    "Its not how hard you work, its how much you get done."