in reply to syntax issue

You can't print "@${a}\n" because you don't have an array reference named 'a'. This works:

my $a = \@{$h{a}}; print "@${a}\n"; # or just "@$a\n";

And the outer curlies in "@{$h{a}}\n" surround an array reference. Reading it inside-out, you have a hash key $h{a} whose value is an anonymous array. To print that value, you dereference it with @{}.