Juerd wrote: > The only real problem with having only infix := for binding, is that you > can't easily use an alias (aka transparent reference) in a list. You can > have an array of aliases, but it's harder to have an array or hash in > which one element is an alias. Binding can be done explicitly: > > %hash = { key => undef, foo => 'bar' }; > %hash<key> := $variable; > %hash<key> = 5; # $variable is now 5 too
Sorry to interrupt, but wasn't {} not derefed when assigned to a % variable? Don't get me wrong, I like this meaning. And it seems to be intuitive once in a while ;) > But there is no way to set the transparent reference (aka alias) > initially, because we lack a \-like syntax. Why isn't \ good enough there? Because it requires $%hash<key> = 5? > So I propose that := becomes a prefix operator as well as an infix one, > allowing: > > %hash = { key => := $variable, foo => 'bar' }; > %hash<key> = 5; # $variable is now 5 too I propose %hash = { key => :\$variable, foo => 'bar' }; Or should we also invent :=> to make a key/link pair? Question: when a variable contains an opaque Ref and one uses this variable in an assignment as lhs, that still goes to the referee? How is the variable then detached? To wit: $var = 7; $ref = \$var; $$ref = 12; # should $ref suffice? say $var; # prints 12 $ref = 17; # detaches? Or is :\$ref = 17 needed? say $var; # still prints 12 -- TSa (Thomas Sandlaß)