Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Multiple if-else statements using C-style ternary operator

by spazm (Monk)
on Jul 11, 2011 at 22:46 UTC ( [id://913795]=note: print w/replies, xml ) Need Help??


in reply to Multiple if-else statements using C-style ternary operator

my $message = $status == 2 ? 'HIGH' : $status == 1 ? 'MODERATE' : 'LOW' print $message

Depending on the depth of status, you may want to use a hash

my %status_message = { 2 => 'HIGH', 1=>'MODERATE', 0=>'LOW' }; my $message = $status_message{ $status } || 'LOW';
Or even a standard array if the values really are ints in a 0..n range.
my @status_messages = qw( LOW MODERAGE HIGH ); my $message = $status_messages[$status] || 'LOW';
These are both made a little more odd by the the inclusiveness of the default "LOW" value. Your demo code makes message "LOW" for any status other than 1 or 2.

Replies are listed 'Best First'.
Re^2: Multiple if-else statements using C-style ternary operator
by JavaFan (Canon) on Jul 11, 2011 at 23:04 UTC
    my %status_message = { 2 => 'HIGH', 1=>'MODERATE', 0=>'LOW' };
    That's not what you want. That creates a hash with a key of the form "HASH(0xDEADBEEF)", and an undefined value has the value.

    Perhaps you intended to write paren instead?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://913795]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (7)
As of 2024-04-25 08:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found