Usually, when you want a hashreference, you use the $
prototype. After all, a hash reference is a scalar. The
prototypes \% and \@ are special. It means
that a variable in that slot has to start with a %
or a @, and that the hash or array will not be
flattened out. You would use this to prototype functions with
a similar behaviour as keys or push.