in reply to Death to Dot Deref

Well, I like the new conventions. Also you don't even have to use this:
$foo.{$k}
Since to acces a hash you would use % and not $, then the compiler can assume it is a reference. Personally I think that $foo->{$K} is better to the eye than $foo.{$k}, but I prefer $foo{$k} to anything.

Also, I do like the dot in this case:

$obj = new SomeModule; $obj.DoSomething(); #as opposed to $obj->DoSomething();
I guess that is just because I come from a c/c++ background : )

The 15 year old, freshman programmer,
Stephen Rawls

Replies are listed 'Best First'.
Re: Re: Death to Dot Deref
by osorronophris (Novice) on May 19, 2001 at 00:27 UTC
    Technically though, using -> for method calls is correct since all Perl objects are really just blessed references. In C or C++ if you access an attribute or call a method from a pointer/reference you do foo->bar as well.

    So while "." may hide the reference structure from you, "->" is technically correct. Course that may not be applicable for Perl 6.

Re^2: Death to Dot Deref
by tadman (Prior) on May 19, 2001 at 04:47 UTC
    This auto-deref seems to be a good thing. C++ compilers could do it, but in C-language school of leaving it up to the programmer to say what they mean, and mean what they say, they won't.

    It would seem that under Perl 6, if a hash-type reference is made to what is a hash-ref, then it dereferences automatically, which enables the equivalence:
    my $foo = {}; $foo{x} = "Bar"; # Auto-dereference $foo->{x} = "Bar"; # Manual dereference
    This sort of behaviour already occurs after the variable is resolved, as in:
    $foo->{y}->{z} = "Zoinks"; print "$foo->{y}{z}"; # Perl5 Auto-dereference
    Under C/C++, there is a huge difference between an object reference, an object pointer, and a stack object. In Perl, though, you could hardly care less where the object is as Perl should be able to figure it out for you.

    From a point of style, though, I would have to agree with srawls in that using '.' with hash or list variables is a bit wacky. It makes a lot more sense when used with object references.