To access a hash element, you'd write $hash{key}. But you may replace the name of the hash with a block that returns a reference to a hash: ${$hashref}{key}. In this case, the first element of @TestVals is a reference to a hash, so we get: ${$TestVals[0]}{key}. Filling in the key gets you: ${$TestVals[0]}{A}.
Now, optionally, you may want to use some shortcuts. ${EXPRESSION}{key} may also be written as (EXPRESSION)->{key}, so, in your case, ($TestVals[0])->{A}. The parens aren't necessary in this case, leading to $TestVals[0]->{A}. Finally, there's a second short cut. Whenever you have [INDEX]->[INDEX], [INDEX]->{INDEX}, {INDEX}->[INDEX], or {INDEX}{INDEX}, you may drop the arrow. This leads to $TestVals[0]{A}.
But do keep in mind that $TestVals[0]{A} is a shortcut for the formal ${$TestVals[0]}{A}. (I always find it funny that neither the shortcut, nor the formal way use an arrow, but the intermediate form does).
In reply to Re: What data structure is this and how to access?
by JavaFan
in thread What data structure is this and how to access?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |