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

help with classes...

Thread Next
christopher j bottaro
December 10, 2002 02:45
help with classes...
Message ID:
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....=)

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About