A backslash placed before one of these symbols forces the argument to
be that exact variable type. For instance, a function that requires a
hash variable would be declared like this:
sub hashfunc (\%);
Unbackslashed @ or % symbols
act exactly alike and will eat up all remaining arguments, forcing
list context. Likewise, a $ forces scalar context
on an argument, so taking an array or hash variable for that
parameter would probably yield unwanted results.