in reply to Hash of Hash of Array Syntax help

OK, there is an array @r somewhere in scope. It has at least four elements. For simplicity, let's assume...

my @r = ('a', 'b', 'c', 'd');

Thus your original code can be rewritten as:

push @{ $genes{'a'}{'b'}{'c'} }, 'd';

Which means that %genes is a hash; $genes{'a'} is one of the items in the hash, and the value of $genes{'a'} is itself a hashref. Similarly, the value of $genes{'a'}{'b'} is also a hashref, and $genes{'a'}{'b'}{'c'} is an arrayref.

And here we're pushing 'd' onto the array referenced by $genes{'a'}{'b'}{'c'}.

So overall, your code is pushing the value of $r[3] onto an array, which is referenced by the value corresponding to key $r[2] in a hash, which is referenced by the value corresponding to key $r[1] in a hash, which is referenced by $genes{ $r[0] } which itself is a single value from the hash %genes.

You could say %gene is a hash of hashes of hashes of arrays, though of course when you have a tree structure like that, perhaps not all branches are symmetrical. If $r[0] took a different value, then perhaps we might consider %gene to be a hash of file handles.