Juerd wrote:
$y() = 7;

No, sorry, that looks to me as if $y is a reference to an lvalue sub,
not like any form of referencing of scalars.

I think it will come naturally to the C++ and Java folks. There the
accessor kind of functions is either mapped into the name get_y()
and set_y(value), or operator () is overloaded. In the latter idiom
assignment actually becomes $y(7). Which might be a bit far out for
Perlkind. But OTOH it looks like a function call...

This idiom looks better with scalar attributes of objects:

  $obj.attr() = 7; # parser supports to drop the .()

and

  $obj.attr(7); # beware, attr becomes 7 if the class of $obj works as such

And it nicely gives:

  $y = \$obj.attr;
  $y() = 7; # dereffed assignment
  $y = 13;  # detaches from $obj.attr
  say $obj.attr; # prints 7

I'm not sure but in Perl5 the equivalent to the second line above is

  $y-> = 7; # postfix -> is now spelled ()

isn't it?
--
TSa (Thomas Sandlaß)

Reply via email to