tags:

views:

165

answers:

2

Is there any reason to use a scalar comma operator anywhere other than in a for loop?

+4  A: 

Since the Perl scalar comma is a "port" of the C comma operator, these comments are probably apropos:

Once in a while, you find yourself in a situation in which C expects a single expression, but you have two things you want to say. The most common (and in fact the only common) example is in a for loop, specifically the first and third controlling expressions. What if (for example) you want to have a loop in which i counts up from 0 to 10 at the same time that j is counting down from 10 to 0?

So, your instinct that it's mainly useful in for loops is a good one, I think.

Jonathan Feinberg
+2  A: 

I occasionally use it in the conditional (sometimes erroneously called "the ternary") operator, if the code is easier to read than breaking it out into a real if/else:

my $blah = condition() ? do_this(), do_that() : do_the_other_thing();

It could also be used in some expression where the last result is important, such as in a grep expression, but in this case it's just the same as if a semicolon was used:

my @results = grep { setup(), condition() } @list;
Ether
Isn't the "?:" operator ternary ? :)
eugene y
@eugene: it's *a* ternary operator, but it's not correct to call it *the* ternary operator.
Ether