Any backslashed prototype character represents an actual argument that absolutely must start with that character. The value passed as part of @_ will be a reference to the actual argument given in the subroutine call, obtained by applying \ to that argument.So you call foo as foo($a_scalar, @an_array, %a_hash) and you will get automatic reference/dereference magic.
Dropping the backslash however breaks this behaviour:
Unbackslashed prototype characters have special meanings. Any unbackslashed @ or % eats all remaining arguments, and forces list context. An argument represented by $ forces scalar context.
@baz would then indeed gobble up the hash following it.
CountZero
"If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law
In reply to Re^3: perl5 "prototyping": why?
by CountZero
in thread perl5 "prototyping": why?
by rvosa
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |