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

johnfl68 has asked for the wisdom of the Perl Monks concerning the following question:

Hello:

I had the following if elsif else:

if ($severity eq "Extreme"){ $background = "red"; } elsif ($severity eq "Severe"){ $background = "orange"; } elsif ($severity eq "Moderate"){ $background = "yelow"; } elsif ($severity eq "Minor"){ $background = "green"; } else { $background = "grey"; }
It worked fine in the script as it was, but when I placed that script into a external subroutine, it broke things (took me a while to figure out that was the part of code causing the issue). So in reading around, many suggest using a hash instead of long if elsif sets. I understand that, and so now I have this:
my %bkcolor = ( "Extreme", "red", "Severe", "orange", "Moderate", "yellow", "Minor", "green", "", "grey" ); my $background = $bkcolor{$severity};

The question I have is, is there a way to handle the last 'else' when doing things in this manor, so that if 'severity' is anything other than the 4 known responses, it will always be grey?

Or is there another way I should be doing this?

Thanks as always!

John