Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re: Replacing If Elsif Else with Hash

by TomDLux (Vicar)
on Nov 24, 2012 at 16:33 UTC ( #1005395=note: print w/ replies, xml ) Need Help??

in reply to Replacing If Elsif Else with Hash

I would suggest putting this chunk into a routine. It provides some documentation, it becomes easier to modify behaviour in the future, because any changes are isolated within a short routine, and implementation details are separated from business logic.

use Readonly; Readonly my %BGCOLOR => ( Extreme => 'red', ... ); Readonly my $DEFAULT_BGCOLOR => 'grey'; sub get_bg_color { my ( $severity ) = @_; return $DEFAULT_BGCOLOR unless exists $BGCOLOR{$severity}; return$BGCOLOR{$severity}; } my $bg = get_bg_color( $condition );

edit - corrected typo $BGCOLOR => %BGCOLOR; thanks, Anon Monk!

As Occam said: Entia non sunt multiplicanda praeter necessitatem.

Comment on Re: Replacing If Elsif Else with Hash
Download Code
Replies are listed 'Best First'.
Re^2: Replacing If Elsif Else with Hash
by sundialsvc4 (Abbot) on Nov 25, 2012 at 03:35 UTC

    I strongly agree with this ... no matter how exactly you choose to write the routine or to initialize the hash.

    When writing this sort of logic, be extremely careful to test for the existence, or the absence, of the hash key ... not for “falsehood.”   Someday you will have a hash-entry whose legitimate value translates to false.   Or even maybe to undef.   It’s just a hungry sort of “gotcha” that’s just waiting for your glutes.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2015-10-04 05:21 GMT
Find Nodes?
    Voting Booth?

    Does Humor Belong in Programming?

    Results (99 votes), past polls