in reply to @h{qw(a b c)} doesn't create an @h array. It sets 3 scalar values in the %h hash.

More generally, this shows off the fact that the sigil does not represent the variable type, it represents the value type. The variable type is determined by other things. In this case, [] vs {} (as BrowserUk explained).

Thus, when you want a single value from an array, you say $array[...]. When you want a list of values, you say @array[...]. Likewise with a hash: $hash{...} vs @hash{...}.