Comment on A nice, little known C feature: Static array indices in parameter declarationsparentComments−leviathan13yCalling a sub with & has a special meaning, it exposes the current argument list @_ to the called sub. That's why you don't see it in most code.−drivers9913yI did not know that. Interesting. However, it only works if you call the sub without parentheses like this: &fooCalling it with parentheses like &foo() would make @_ empty inside of foo. (Or if you said &foo("whatever") it would pass that as @_ instead.) sub while { print "@_\n"; &foo(); } sub foo { print "@_\n"; } &while("a","b","c"); produces: a b c (blank line) as the output, and sub while { print "@_\n"; &foo; } sub foo { print "@_\n"; } &while("a","b","c"); produces: a b c a b c as the output. At any rate, back to the original topic: it still doesn't prevent new keywords from potentially colliding. Oh well.
Comments
Calling a sub with & has a special meaning, it exposes the current argument list @_ to the called sub. That's why you don't see it in most code.
I did not know that. Interesting. However, it only works if you call the sub without parentheses like this: &foo
Calling it with parentheses like &foo() would make @_ empty inside of foo. (Or if you said &foo("whatever") it would pass that as @_ instead.)
produces: as the output, and produces: as the output. At any rate, back to the original topic: it still doesn't prevent new keywords from potentially colliding. Oh well.