"my" variable %hash1 masks earlier declaration in same scope #### my (%hash1, %hash2, %hash3); #### # use strict; use warnings; %_ = (u => 2); %hash1 = (b => 3); # %hash1 = (b => 3); # %_ = () for my (%hash1,%hash2,%hash3); # %_ = () for (%hash1,%hash2,%hash3); print %_, %hash1, "\n";