$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!)