Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Re: Problem with My New Perl Object

by janx (Monk)
on Jun 19, 2002 at 12:49 UTC ( [id://175644]=note: print w/replies, xml ) Need Help??


in reply to Re: Problem with My New Perl Object
in thread Problem with My New Perl Object

To make even neater write:

sub new { my $pkg = shift; return bless {}, ref $pkg || $pkg; }
to be able to pull off tricks like this:

use strict; use warnings; package BaseClass; sub new { my $pkg = shift; bless {}, ref $pkg || $pkg; } sub bar { $_[0]->{'BaseClass::bar'} = $_[1]; } package SubClass; our @ISA = qw/BaseClass/; package main; my $obj = SubClass->new; my $foo = $obj->new; printf "obj isa %s\nfoo isa %s\n", $obj, $foo;

Using the  bless {}, ref $pkg || $pkg idiom you are writing classes that are safe to subclass.

Do have a look at Damian Conways excellent book Object Oriented Perl

Kay

Replies are listed 'Best First'.
Re^3: Problem with My New Perl Object
by dws (Chancellor) on Jun 19, 2002 at 16:35 UTC
    To make even neater write:
    return bless {}, ref $pkg || $pkg;

    This technique has been the basis of at least one recent "cargo cult" discussion. There are mixed opinions over whether overloading a class constructor is a prudent thing to do.

    In this post, merlyn points out a cleaner way to get the same effect, without overloading your class constructor.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (8)
As of 2024-03-29 08:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found