Just as those in favour of postfix deref won't add: $foo->{bar}->{baz}->$* = 4;, because that would be equally pointless.
:-) What would be pointful instead? (what is the equivalent but pointful expression?)
So, back to the real argument.
When explicit dereferencing is actually required, is push @{ $foo->{bar}{baz} }, 4;
Simpler, clearer, easier to scan and less ugly than push $foo->{bar}->{baz}->@*, 4;
Sure, just like
$foo->{bar}{baz} = 4;
is simpler, clearer, easier to scan and less ugly than
${ $foo->{bar} }{baz} = 4;
just like
$foo->{bar}{baz}->@[1, 2, 3] = (100, 200, 500);
is simpler, clearer, easier to scan and less ugly than
@{ $foo->{bar}{baz} }[1, 2, 3] = (100, 200, 500);
just like
$foo->{bar}{baz}->$* = 4;
is simpler, clearer, easier to scan and less ugly than
${ $foo->{bar}{baz} } = 4;
And I think no one is going to take push @{ stuff }, stuff away from you?
Back to the real point
Postderef is good for exactly the same reason that the existing -> operator is good. Most people prefer to read and write in one direction (such as left-to-right) rather than inside-out. Postderef syntax is especially good for slices - @{ $foo->{bar} }[1, 2, 3] is 'pointless' for the same reason that ${ $foo->{bar} }{baz} is 'pointless'. The reason is inside-out reading. I also don't see why it shouldn't work for the whole thing - you still get to read the expression left-to-right, so it's still just as good. If it works at all, it should work everywhere, including push, even if you some find it 'ugly' or 'pointless'. | [reply] [d/l] [select] |