--- Peter Cornelius <[EMAIL PROTECTED]> wrote:
> This might be a little more clear if you break down > the way arguments > are being passed in and what they actually are. It > sounds like > you're aware that the arguments are passed in as a > list name @_, it > looks like the arguments are something like this: > > @_ = ( #<---- A list > { _name => 'something' }, # <---- a hash > reference (objects are > hashes in perl) > 'some set name string' #<---- a string > ); > > The first version extracts the arguments so that you > can refer to > them by names that might have some meaning to > someone maintaining > your code latter on. The second version accesses > them directly. > > > sub name{ #version 1 > > my $self=shift; > > shift is going to give you $_[0] > > > > > my $set_name=shift; > > This sets $set_name to $_[1] > > > > > $self->{_name}=$set_name if defined $set_name; > > > > So this is equivalent to > $_[0]->{_name} = $_[1] if defined $_[1] > the '->' is to dereference the hash reference stored > in $_[0]. > > > return $self->{_name} > > } > > > > > > Another version for the subroutine name > > > > sub name{ #verstion 2 > > $_[0]->{_name}=$_[1] if defined }$_[1]; > > {$_[0]->{_name} > > } > > > > I feel a little bit confuse about the verion 2 > > subroutine name. The way it gets the value of > > attribute name looks like this to me: > > array element->{_name} > > > > (I know that the $_[0] in the default array @_ is > > actually an object $self. ) > > Hope this helps > PC Thank you all for the reply. Based on what I learn the regular method to defer a hash reference to get specific value takes this format: $ref_hash->{key1} but in this line $_[0]->{_name}= $_[1] if defined $_[1] the format is array element->{_name} Is the middle man $ref_hash is omitted in this format? Does this what Perl really sees: $_[0]=$ref_hash; $ref_hash->{_name}; and put these two lines into one line to make it short: $_[0]->{_name} Li __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>