Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: OO systems and Perl 5 (Was: Recap: Future of Perl 5)

by tobyink (Canon)
on Aug 29, 2018 at 02:01 UTC ( #1221286=note: print w/replies, xml ) Need Help??

in reply to OO systems and Perl 5 (Was: Recap: Future of Perl 5)

That's pretty much what UNIVERSAL::Object aims to do, but uses UNIVERSAL::Object::new instead of UNIVERSAL::new. Probably pretty easy to do something like:


Replies are listed 'Best First'.
Re^2: OO systems and Perl 5 (Was: Recap: Future of Perl 5)
by RonW (Parson) on Aug 29, 2018 at 23:31 UTC

    Certainly a very interesting project. The advantage of UNIVERSAL::new would be that UNIVERSAL is automatically used.

    Of course, that leaves the task of actually getting anything added to From the comments in the file, it seems that a lot has already been removed from it and some people want to remove more from it. itself is not so important. It's mostly just documentation. The guts of the UNIVERSAL package (UNIVERSAL::can, UNIVERSAL::isa, UNIVERSAL::DOES) are hard-coded into Perl, not part of a module.

      The disadvantage of having UNIVERSAL::new is that all packages automatically inherit from UNIVERSAL; even ones not designed to be used as classes. How much sense do things like this make?

      use strict; my $thing = strict->new;

      A whole lot of modules would need to add code like this to them:

      sub new { # override UNIVERSAL::new require Carp; Carp::croak("$_[0] is not a class"); }

        If "method dispatch" is not being used, how would UNIVERSAL::new be inherited?

        Also, related to LanX's comment, How does method dispatch interact with AUTOLOAD?

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1221286]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (2)
As of 2021-10-23 03:02 GMT
Find Nodes?
    Voting Booth?
    My first memorable Perl project was:

    Results (86 votes). Check out past polls.