in reply to $50 towards a laptop for the winner

Arguably, we already have a minimal OO spec for Perl — the "classic" Perl 5 object system uses only two primitives: bless to associate a vtable (in the form of a package STASH) to a data reference, and the method call operator (variably written as $obj->$method(LIST) or method $obj LIST) that searches those vtables, implementing inheritance as "look here next if not found" semantics from the package variable @ISA in each package used as a vtable.

So I ask: how does the "classic" Perl 5 object system not meet your criteria?

(Yes, the arrow operator accepts a scalar naming the method to call.)

Replies are listed 'Best First'.
Re^2: $50 towards a laptop for the winner
by LanX (Saint) on Jul 28, 2020 at 23:59 UTC
    > (Yes, the arrow operator accepts a scalar naming the method to call.)

    Only half the truth, if $method is a code-ref it'll be called like a method (i.e. with $obj as first argument)

    Sorry for nitpicking :)

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

      No real nitpick — I learned something new: the arrow operator also accepts a scalar containing a code reference.

Re^2: $50 towards a laptop for the winner
by perlfan (Parson) on Jul 30, 2020 at 03:58 UTC
    That's a good question. I'm not the one with the itch this won't scratch. Maybe that's the problem. People don't know what they want. The most I ever learned about Perl was when I decided to tackle OOP many moons ago. It pulls in a large number of existing, very powerful features that worked beautifully together. As a result, I not only learned how to put them together, I had those constituent parts at my disposal as well (closures over subs for RO, e.g.). If more people took the time to learn the MEAT, they wouldn't be asking for the sugar. Let's bring classic oop back. Surely Damian would like to sell some more books circa 2000. It's all I ever needed.