http://www.perlmonks.org?node_id=11119138


in reply to Ternary Quizical behaviour?

Basically the good practice rule is to not reuse a variable in a statement where you modify it (because you might get tricked by the order of operation, or by some caching mechanism where perl only fetches the value once and uses it several times). An example of such a mistake can be found here (I remember this thread because I've been wrong with an awful lot of confidence, so disregard my answer there :P). And you could also try some variant of your second test:

my %hash2 = ( a => ++$m, b => ++$m, c => ++$m );
#This time you get three times the same value 0 HASH(0x30ef548) 'a' => 3 'b' => 3 'c' => 3