Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: fall through switch/case in perl

by DamnDirtyApe (Curate)
on Sep 07, 2004 at 07:12 UTC ( #388954=note: print w/ replies, xml ) Need Help??


in reply to fall through switch/case in perl

The first answer that came to mind was the Switch module, but for some reason it doesn't seem to be behaving as expected. Can anyone tell me why this doesn't do what it looks like it should do?

#! /usr/bin/perl use strict; use Switch 'fallthrough'; sub test_switch { my $val = shift; switch ( $val ) { case 10 { print "a"; } case 9 { print "b"; } case 8 { print "c"; } case 7 { print "d"; } case 6 { print "e"; } case 5 { print "f"; } case 4 { print "g"; } case 3 { print "h"; } case 2 { print "i"; } case 1 { print "j"; } } } test_switch( 10 ); print "\n"; test_switch( 5 ); print "\n"; __END__

Results:

a f

Maybe I'm overlooking something, but I'm failing to see why this isn't doing just what the OP asked for. Please help.


_______________
DamnDirtyApe
Those who know that they are profound strive for clarity. Those who
would like to seem profound to the crowd strive for obscurity.
            --Friedrich Nietzsche


Comment on Re: fall through switch/case in perl
Select or Download Code
Re^2: fall through switch/case in perl
by Zed_Lopez (Chaplain) on Sep 07, 2004 at 16:47 UTC

    I looked at Switch first, too. The thing with Switch 'fallthrough' is that it falls to the next condition, not the next bit of code (like it does in C).

    If each successive condition is inclusive of all its predessors, you can do it with Switch 'fallthrough':

    use Switch 'fallthrough'; sub test_switch { my $val = shift; switch ( $val ) { case 10 { print "a"; } case [9..10] { print "b"; } case [8..10] { print "c"; } case [7..10] { print "d"; } case [6..10] { print "e"; } case [5..10] { print "f"; } case [4..10] { print "g"; } case [3..10] { print "h"; } case [2..10] { print "i"; } case [1..10] { print "j"; } } }

    This is hard to extend beyond the realm of successive integers, of course.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (11)
As of 2014-07-23 09:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (138 votes), past polls