### Different behaviour of count++ or misunderstanding?

by vagabonding electron (Chaplain)
 on Apr 11, 2014 at 08:53 UTC Need Help??
vagabonding electron has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

I am chasing my off-by-one-error while solving this one and noticed a strange behavior (well, strange in my eyes :) ) of count++.

Here is a minimal example. As posted it prints 4 then 3. If I comment count++ and above the push and uncomment count++ below it prints 4 then 4, as I would have expected in the first case as well. This difference happens on the first occurrence only. Why?

```#!/perl
use strict;
use warnings;

my @AoA_1 =
(
[ 2, 5, 9 ],
[ 7, 6, 5 ],
[ 1, 8, 3 ],
[ 2, 5, 9 ],
[ 7, 6, 5 ],
[ 1, 8, 3 ],
);

my @AoA_2 =
(
[ 9, 5, 2 ],
[ 3, 6, 5 ],
[ 0, 8, 3 ],
[ 9, 5, 2 ],
[ 3, 6, 5 ],
[ 0, 8, 3 ],
);
my \$count;
my @test_array;
for my \$n ( 0 .. \$#AoA_1 )
{
my @a1 = @{\$AoA_1[\$n]};
my @a2 = @{\$AoA_2[\$n]};
for my \$i ( 0 .. \$#a1 )
{
last if \$a1[\$i] < \$a2[\$i];
next if \$a1[\$i] == \$a2[\$i];
\$count++ and
push @test_array, \$n
# and \$count++
and last
if ( \$a1[\$i] > \$a2[\$i] );
}
}
print \$count, \$/;
print scalar @test_array, \$/;

Replies are listed 'Best First'.
Re: Different behaviour of count++ or misunderstanding?
by hdb (Monsignor) on Apr 11, 2014 at 09:39 UTC

In the first iteration \$count++ evaluates to zero and thus the and short-circuits and the push is not executed. If you compare the contents of @test_array in both cases you will see that the first element is missing.

Thank you very much! After changing \$count++ to ++\$count there is no difference anymore.

Re: Different behaviour of count++ or misunderstanding?
by kcott (Chancellor) on Apr 11, 2014 at 23:08 UTC

Create A New User
Node Status?
node history
Node Type: perlquestion [id://1081934]
Approved by Corion
Front-paged by mtmcc
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (5)
As of 2017-11-20 23:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In order to be able to say "I know Perl", you must have:

Results (294 votes). Check out past polls.

Notices?