in reply to syntax issue

why the curly braces surrounding the array
Because that's the main syntax for dereferencing: sigil-block, with in most cases, the block requiring curlies (there are a few cases where the curlies can be omitted, or where an alternative arrow bases syntax is available -- but sigil-block always works). The result of the block should be a reference matching the sigil.

So, in your case, the $h{a} gives you an array reference. To dereference it, use the sigil-block syntax, with $h{a} as the block content. So, the result is: @{$h{a}}.

Note that you write @$h{a}, Perl considers this a short-hand for @{$h}{a}. This would try to (array)dereference $h, and to (hash)index the result, causing a run-time error.