in reply to fall through switch/case in perl
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: fall through switch/case in perl
by BrowserUk (Patriarch) on Sep 07, 2004 at 02:23 UTC | |
by Aristotle (Chancellor) on Sep 07, 2004 at 03:21 UTC | |
by BrowserUk (Patriarch) on Sep 07, 2004 at 03:25 UTC | |
|
Re^2: fall through switch/case in perl
by Anonymous Monk on Sep 07, 2004 at 08:48 UTC |