Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Using Number Ranges in a Dispatch Table

by RichardK (Priest)
on Feb 19, 2012 at 12:26 UTC ( #954859=note: print w/ replies, xml ) Need Help??


in reply to Using Number Ranges in a Dispatch Table

I think using given Switch statements gives you much more flexibility, as it uses smart matching and can do lots of clever things. You do have to type a bit more but it's worth it ;)

So something like this :-

use v5.14; use warnings; sub ident_number { my ($num) = @_; given ($num) { when ('01') { say 'geographic'; } when (/^\d+$/ && $_ >= 124 && $_ <= 140) { say '124 - 140'; } when ([143 .. 146, 148 .. 149]) { say "$_ other stuff"; } when ([181 ..189]) { say '181 -- 189'; } default { say "$_ not found"; } } } my @tests = qw/ 01 02 125 127 186 500 143 149 189/; for (@tests) { ident_number($_); }


Comment on Re: Using Number Ranges in a Dispatch Table
Download Code
Re^2: Using Number Ranges in a Dispatch Table
by tobyink (Abbot) on Feb 19, 2012 at 22:15 UTC

    My initial attempt was based on given but I switched to using a list of smart matches and subroutines because given has a drawback compared to dispatch tables...

    With dispatch tables you can check whether a particular value can dispatch, without actually doing the dispatching yet. If your dispatch table is a hash, then it's just defined($dispatch{$value}).

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (6)
As of 2014-12-21 11:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (104 votes), past polls