in reply to Re^2: Match Numeric Range
in thread Match Numeric Range

This kind of thing can be okay for progressive checking. I normal dislike this style of code/logic but it seems a good fit for this kind of problem.

if ( $range > 500 ) { WAT_OP(); } elsif ( $range >= 425 ) { some_op(); } elsif ( $range > 400 ) { some_other_op(); } elsif ( $range > 300 ) { exit 0; } else { complete_tree_op(); }

You can also do something more dispatchy–

my @action_tree = ( { test => sub { $_[0] >= 300 && $_[0] <= 400 }, action => sub { print "GUDNITES\n"; CORE::exit(0 +) } }, { test => sub { $_[0] >= 425 && $_[0] <= 500 }, action => sub { print "OHAI\n" } } ); while ( my $signal = <SIGNAL_SOURCE> ) { $_->{test}->($signal) && $_->{action}->() for @action_tree; }

I'm not advocating either, or that second style of terseness, or any style or approach for that matter. Just expanding the library of options. :P

Replies are listed 'Best First'.
Re^4: Match Numeric Range
by PilotinControl (Pilgrim) on Aug 18, 2015 at 14:39 UTC

    Thanks YourMother! This approach worked as expected and with narrowing down the numbers being sent out by the serial monitor I can fine tune the range of the photo resistor to accomplish what I need it too. Thanks to all who answered.