Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Checking for Presence of Optional Attribute in Moose Object

by FalseVinylShrub (Chaplain)
on Jul 04, 2010 at 04:41 UTC ( #847954=note: print w/replies, xml ) Need Help??


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

Hi

I think your test should work without the warning if you use if (defined $self->age) { ... }.

According to Moose::Manual::Attributes, you could also set up a predicate for that attribute:

has 'age' => ( is => 'ro', isa => 'Str', predicate => 'has_age' ); if ($self->has_age) { ... }

The predicate allows you to have undefined or false values and still know whether it's ever been set or not.

On the other hand, if you just want to be able to interpolate an empty value into a string without warnings, how about putting a default of '':

has 'age' => ( is => 'ro', isa => 'Str', default => '', );

Assumes that '' is not a valid age... But that sounds like a reasonable assumption.

FalseVinylShrub

Disclaimer: Please review and test code, and use at your own risk... If I answer a question, I would like to hear if and how you solved your problem.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://847954]
help
Chatterbox?
[james28909]: Good morning!
[james28909]: I have a problem I am trying to solve. I am packaging scripts using pdk and would like the verify the executable name each time it is executed
[Corion]: Hi James!
[james28909]: I looked through the docs, and see that PerlApp::exe() is suppose to return this information but whenever i try to use this, i get the error "Undefined subroutine &PerlApp::exe called"
[james28909]: i just want to verify the integrity of the executables name each time it is run.

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (10)
As of 2017-07-28 13:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (429 votes). Check out past polls.