in reply to Referencing a hash

If you really want to interpolate a variable into the name of another variable, as you are doing, which is called a symbolic reference, you need to turn off strict 'refs'as in:
# UNTESTED. print "this one works: $other0{'cat1'}\n"; { no strict 'refs' print "problem here: ${$catnames[0]}{'cat1'}\n $catnames[0]->{'cat +1'}"; }

This turns off strictness as regards symbolic references between the innermost contiaing braces.

However:

--Bob Niederman, http://bob-n.com