in reply to using keys on hash of hash

When you use the %{...} construction as-noted, you basically are telling the compiler to shut-up: that you know what you are doing; that you know what kind of value the value will be. This declaration will silence the error, but it's up to you to make sure that what you promise is always actually so.