in reply to Expand Ranges in Lists of Numbers

Hate to flog a dead horse (not that your code is a dead horse - i just like that expression), but this:
$tmp[0] > $tmp[1] ? push @expanded, reverse ($tmp[1]..$tmp[0]) : push @expanded, ($tmp[0]..$tmp[1]);
is bad style because the ternery operator is being used in void context. You would be better using an if-else statement, because it is more readable. If you prefer the brevity of the ternery operator, then please use it as an assignment operator:
push @expanded, $tmp[0] > $tmp[1] ? reverse ($tmp[1]..$tmp[0]) : ($tmp[0]..$tmp[1]) ;
I like the changes, by the way. Now we have a fully flogged dead horse. :D

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)

Replies are listed 'Best First'.
Re^2: Expand Ranges in Lists of Numbers (ternary in void context?)
by Aristotle (Chancellor) on Jun 09, 2003 at 12:16 UTC
    ( $tmp[0] > $tmp[1] ? sub { push @expanded, reverse ($tmp[1]..$tmp[0]) } : sub { push @expanded, ($tmp[0]..$tmp[1]) } )->();
    :->

    Makeshifts last the longest.

Re: (jeffa) Re: Expand Ranges in Lists of Numbers
by The Mad Hatter (Priest) on Jun 09, 2003 at 01:45 UTC
    bad style because the ternery operator is being used in void context.
    I know, I'm guilty. I have a tendency to use the ternary operator like that quite often and I've been trying to kick the habit, but the habit keeps kicking back (so to speak). Anyway, I'll change it in the code.

    Sometimes I wish one line blocks for if-else statements didn't require brackets, like C's. Oh well.

    I like the changes, by the way. Now we have a fully flogged dead horse. :D
    Thanks, I like the funky reverse abbreviated ranges. I always liked beating things that couldn't fight back... ; )

      "Sometimes I wish one line blocks for if-else statements didn't require brackets..."

      I use to say the same thing until i realized they don't:
      print "that's the answer" if $answer == 42; die "that's not your file!" unless -o $file;
      A caveat i teach my C++ lab students (i am a graduate teaching assistant at MTSU) is that even though braces are optional for one line blocks, they should get in the habit of using them always. Why? Because 9 times outta 10 you will want to add a second line in the near future. Murphy's law or something ... ;)

      jeffa

      L-LL-L--L-LL-L--L-LL-L--
      -R--R-RR-R--R-RR-R--R-RR
      B--B--B--B--B--B--B--B--
      H---H---H---H---H---H---
      (the triplet paradiddle with high-hat)
      
        print "that's the answer" if $answer == 42;
        Yeah, but there is no "elegant" way to do this
        if ($answer == 42) print "that's the answer"; else print "you're a jerk. a complete kneebiter.";
        You'd have to do something like
        print "that's the answer" if $answer == 42; print "you're a jerk. a complete kneebiter." unless $answer == 42;
        9 times outta 10 you will want to add a second line in the near future.
        Heh. I bet at first they ignore your advice. Then they keep on having to add braces and they realize that you're right. ; )