As an example, this won&#x27;t run:<p>%hash = {key1 =&gt; &#x27;value1&#x27;}<p>$hash_of_hash-&gt;{hash1} = %hash<p>Now, this will work (or something like it, I don&#x27;t remember the syntax):<p>%hash = {key1 =&gt; &#x27;value1&#x27;}<p>$hash_of_hash-&gt;{hash1} = \%hash<p>The syntax makes a lot of sense when you read the specs. It does create lots of problems when you try to create complex data structures in practice. It&#x27;s also complex enough (with enough corner cases) that I can&#x27;t remember it if I don&#x27;t use it every week - but maybe that&#x27;s just me.<p>By the way, I don&#x27;t remember whether I must read the above structure as:<p>$hash_of_hash-&gt;{hash1}{key1}<p>or<p>$($hash_of_hash-&gt;{hash1}){key1}<p>I also don&#x27;t remember if it is equal to the one you defined. I know it&#x27;s in the documentation, and it&#x27;s very clear there. It&#x27;s just some corner case that I never bothered to memorize for any long time.