I believe it has something to do with the scope of the variables and the Authors attempt to force the $hash variable to be truly private. There is a great discussion of this in "Object Oriented Perl" by Damian Conway. If you do not have this book it is a must for any OOP Perl programmer and a great introduction to OOP with Perl.