$a + ++$a
####
0 + $a++
####
$a + $a++
####
#!/usr/bin/perl -w
use strict;
for $b (
'$a++ ',
'0 + $a++',
'0 + ++$a',
'++$a + $a',
'$a + ++$a',
'$a + $a++',
'++$a + $a++',
'$a++ + ++$a',
'$a+=$a++'
) {
$a = 0;
print "$b\t=", eval($b), "\t\$a= $a\n";
}
__END__
# results:
$a++ =0 $a= 1
0 + $a++ =0 $a= 1
0 + ++$a =1 $a= 1
++$a + $a =2 $a= 1
$a + ++$a =2 $a= 1
$a + $a++ =1 $a= 1
++$a + $a++ =3 $a= 2
$a++ + ++$a =2 $a= 2
$a+=$a++ =1 $a= 1
####
$a + $a + $a++ # = 0 (correct)
$a + $a + ++$a # = 1 (correct)
$a + $a++ + $a # = 2 (the trailing $a has no effect maybe?)
$a + ++$a + $a # = 3 (the ++ effects previous $a as before?)
####
$a + $a + ++$a + $a++ # = 2 (correct!)
0 + ++$a + $a++ # = 3 (d'oh!)