Ah, @* looking like a global variable, I can see that objection.No. No!
My concern is that the @* %* $* constructs blur the lines between operators, sigils and special variables, which is not about globalness or localization, but about language.
I said "global variable" not to emphasize "global" (don't be so quick to assume I'm not agreeing with you?). I see the syntax having a strong visual similarity to a (global or "special") variable and find this similarity to be a problem (same as you). I don't like blurring the lines between what looks like a type of variable and what is a syntax used for dereferencing.
I don't see how it blurs any lines related to operators, though. Unless you somehow consider something like ->{ ... } an operator. -> is an operator. ->[ is something more than that for which I don't have a particularly good name. ->[ ... ] is "syntax" or a "construct".
So, clearly, we need to drop the % (modulo) operator since we all know that % is supposed to be a sigil, and we mustn't blur the lines between sigils and operators. Same goes for & and *, by the way. ** looks like a glob named '*' so certainly must not be used as an operator. %= looks like a special hash.
Actually, %= is a global hash. It is also the modulo-assignment operator.
> say '%= = 0..9; $k = %=; $k %= %=;' Argument "4/8" isn't numeric in modulus (%) Argument "4/8" isn't numeric in modulus (%) 0
I find ->@* much less worrying than the above as the required prefix (->) is so much more explicit and visible. I'm not sure how I'd feel about the -> being optional in some cases (maybe it already is?).
And the mentioned part of demerphq's argument that you linked to:
my @things= $foo->@*;
So, now, the $ no longer can be relied to refer to a "scalar", it might be a scalar, it might not.
Complains about a guarantee that already isn't assured:
my @things = $scalar->fetch_all_the_things();
so I find that argument quite unconvincing.
- tye
In reply to Re^5: use feature 'postderef'; # Postfix Dereference Syntax is coming in 5.20 (sigils)
by tye
in thread use feature 'postderef'; # Postfix Dereference Syntax is coming in 5.20
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |