in reply to hashes hash refs and arrays

my ( $share_hash, %share_hash, @fields );
You have 2 variables with the same name. To ease the confusion, rename $share_hash as $share_hash_ref

Some other things to try: