His use of %$self is neither an error (%$self is just as much a hash as %hash) nor inappropriate in this case (since he needs to return a blessed reference).
Comment on Re^6: FATAL ERROR: Can't use string ("HASH(0x875fffc)") as a HASH ref while "strict refs" in use at