There are a number of problems with your module. For one, since hashes are unordered lists, using shift when assigning the values doesn't make any sense.

The main reason why you're not getting the desired result is because you're assigning and returning the wrong var. You need to assign and return the values to/from the $self object, not the $hs_instance_class hash.

Can you explain me how $self var knows from which hash it must take a value ? Could you help me with repair this module or just send me a link with 'good practice' of OO in perl ? My idea of this module it to keep values from xml, but I have three different xml so this is the reason that I use 3 different hashes.