Ah, @* looking like a global variable, I can see that objection. The prior proposals I saw used ->@ not ->@*. I didn't mind the addition of the '*' when I saw it (just recently) because it seemed borrowed from Perl 6. But I'd be happy to have the '*' dropped so long as that doesn't introduce parsing difficulties.
Note that $obj->$* even already had a meaning before this change. However, that meaning was quite useless (since $* is no longer supported).
Surely there are cases when the introduction of a temporary variable can aid clarity, but I don't think that is universally true and I don't think it should be required (in order to work around the incomplete nature of postfix dereferencing prior to this patch).
my @got = ExactlyWhatThisReturns( $exactly, $what, $it, $is, $based, $on, )->@*;
If the routine and each of the variables above have reasonable names, then I think assigning a name to the temporary reference would add absolutely zero clarity.
Similarly, I think it will quite often be the case that in a construct like:
my( $state, $zip ) = $user->GetAccount()->GetPriorOrder() ->GetShippingAddress()->@{ 'state', 'zip' };
having to make up a name for the second-to-last result in the chain would have dubious value in improving clarity (more like negative value).
- tye
In reply to Re^3: use feature 'postderef'; # Postfix Dereference Syntax is coming in 5.20 (*)
by tye
in thread use feature 'postderef'; # Postfix Dereference Syntax is coming in 5.20
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |