The inherent weakness in your query is that you are asking for a Perl equivalent to a basic 'switch' idiom, when Perl doesn't provide a 'switch' construct.
You are asking about Duff's Device ..... which, as I remember, was invented to save a couple dozen machine instructions. My understanding is that Duff's Device is mostly viewed as poor programming, since saving a few dozen machine cycles at 3 GHz is less important than leading to quick and clear reader understanding of the code. On the other hand, I can imagine programmers dealing with highly-efficient code, such as embedded programmers, might accept Duff as an easily recognized idiom.
So the next question is, without a switch statement, how would we implement Duff?
We've had one suggestion, using substr(), very closely related to the details of this question.
More generally, you might consider re-framing the conditionals:
for my $val ( $var ) { print "a" if ( $val >= 10 ); print "b" if ( $val >= 9 ); print "c" if ( $val >= 8 ); print "d" if ( $val >= 7 ); print "e" if ( $val >= 6 ); print "f" if ( $val >= 5 ); print "g" if ( $val >= 4 ); print "h" if ( $val >= 3 ); print "i" if ( $val >= 2 ); print "j" if ( $val >= 1 ); }
So, yes, it can be achieved, but you need to think somewhat differently.
--
TTTATCGGTCGTTATATAGATGTTTGCA
In reply to Re: fall through switch/case in perl
by TomDLux
in thread fall through switch/case in perl
by ykar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |