http://www.perlmonks.org?node_id=80774


in reply to Exegesis 2 - Perl 6

My comments on the article:
  • typed lexicals are great. they will reduce memory and increase speed. And allow Perl to even more powerfully bridge the gap between shell and C that perl was designed to.
  • Damian sayeth
    like most other global punctuation variables, $/ has been banished from Perl 6
    I guess that means bye-bye to a lot of obfuscated Perl code. The globals really never affect most people's lives anway, except $|
  • Damian sayeth
    (in Perl 6 -> is spelled .)
    Hmm, we have tons of code using ->. Also, the arrow stands out better. Whats purpose of this change? I don't like it.
  • Damian sayeth
    The call to $node.Found would normally be a method call (in Perl 6 -> is spelled .). But since $node is just a regular unblessed hash, there is no Found method to call. So Perl treats the request as a property query instead and returns (an alias to) the corresponding property.
    This is an interesting fall-through property. But does it mean that execution time increases because it starts making run-time checks for methods before doing a hash lookup?
  • Damian sayeth
    But then the serpent of OO entered the garden, and offered Perlkind the bitter fruit of subroutine and method calls: print $subref->(); print $objref->method(); Now the leading $ no longer indicated the type of value returned. And in beginners' Perl classes across the land there arose a great wailing and a gnashing of teeth.
    Wow, for all my efforts to detect inconsistencies in Perl, it never occurred to me that the dollar sign should by arguments of context imply a scalar return value. It was just so natural to use I never thought of how it broke that rule.

    I dont believe Damian mentioned how method calls would imply the type of their return values did he? Nothing like

    @objref->method()
    is on the horizon is it?