The range operator uses the magic increment operator internally so that it can work on strings (i.e, 'a'..'zzz'). Since there is no corresponding magic decrement operator, it doesn't work in reverse. You could make the argument that for numeric endpoints, you don't need the increment/decrement to be magical, but this is the way it is... | [reply] [Watch: Dir/Any] |
Well, contrariwise, it's useful in its current form if you want to be able to short-circuit out empty lists without having to do an explicit test. For (contrived, but based on a real-world memory) example:
sub contrivance {
my $min = shift;
my $max = some_function();
for ($min .. $max) {
print "I think that $_ is a valid possibility\n";
}
}
Contrived, as I said. But the point is that you can readily find a family of uses for the range operator where you'd want to return an empty list rather than counting backward if the RHS is less than the LHS, just as you can (and indeed, you have) for the opposite. Apparently, Larry thought my use case was more common than yours—lucky me, huh? :-)
If God had meant us to fly, he would *never* have given us the railroads. --Michael Flanders
| [reply] [Watch: Dir/Any] [d/l] |
this doesn't work as I expected
The key element there being "I".
Perl works as Larry expects. It's up to the rest of us to figure out what that means. (And for some of us to write about it and teach it.)
| [reply] [Watch: Dir/Any] |