On Sun, Jan 24, 2016 at 05:44:14PM +0200, Shlomi Fish wrote:
> Hi lee,
>
> On Sun, 24 Jan 2016 13:11:37 +0100
> lee <[email protected]> wrote:
>
> > Paul Johnson <[email protected]> writes:
> > >
> > > In scalar context the comma operator evaluates its left-hand side,
> > > throws it away and returns the right-hand side.
> >
> > What is the useful use for this operator?
> >
>
> Well, I believe its use was originally inherited from
> https://en.wikipedia.org/wiki/C_%28programming_language%29 where one can do
> something like:
>
> x = (y++, y+2);
>
> In Perl 5 though it is preferable to use do { ... } instead:
>
> $x = do { $y++; $y+2; };
In both Perl and C the comma operator is probably most usually (deliberately)
seen in for statements:
#!/usr/bin/env perl
use strict;
use warnings;
for (my ($x, $y) = (1, 7); $x < 5; $x++, $y--) {
print "$x $y\n";
}
and
#include <stdio.h>
int main() {
int x, y;
for (x = 1, y = 7; x < 5; x++, y--)
printf("%d %d\n", x, y);
return 0;
}
both of which produce the output:
1 7
2 6
3 5
4 4
--
Paul Johnson - [email protected]
http://www.pjcj.net
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/