develooper Front page | perl.beginners | Postings from December 2002

help with classes...

Thread Next
From:
christopher j bottaro
Date:
December 10, 2002 02:45
Subject:
help with classes...
Message ID:
200212100445.16180.cjb@cs.utexas.edu
hey,
i'm a c/c++ programmer struggling to pick up OO perl.  i've been reading the 
perltoot and i have question about the following:

package Person;
    use strict;

    sub new {
        my $self  = {};
        $self->{NAME}   = undef;
        $self->{AGE}    = undef;
        $self->{PEERS}  = [];
        bless($self);           # but see below
        return $self;
    }

    sub name {
        my $self = shift;
        if (@_) { $self->{NAME} = shift }
        return $self->{NAME};
    }

ok, in the sub new(), i understand that $self is a ref and new() is returning 
it.  what does bless do (the single arg version).  i thought bless takes 2 
args:  what to bless and the name to bless it with...?  what else does bless 
do besides give something a type?

in the sub name(), what is the first argument?  obviously its a reference to a 
person object (or whatever new() returned).  but why?  i've written subs 
before and used shift(), but this is confusing me.  say i have $person = 
Person->new();  now i do $person->name();  i'm not passing it any arguments 
so why is the sub name() receiving an argument which is a reference to a 
Person object?  does it have something to do with bless()?  something to do 
with being a part of package?

thanks for the help....=)
christopher

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About