One of the features of Perl is that the special variable @_ is actually an alias of the arguments passed to it. In other words, the following code may confuse people:
my $x = 3; somesub ( $x ); sub somesub { print ++$_[0]; } print $x;
Because of the aliasing, &somesub actually alters the value of $x and both print statements print 4. However, with your second example, whatever you pass to &XXX must be a reference to an anonymous hash. When $self is assigned the value of $_[0], it is assigned the reference and thus can alter the underlying anonymous hash values. You can copy references all day long and they still point to the same thing (so long as you don't accidentally stringify them).
Cheers,
Ovid
Vote for paco!
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.
In reply to (Ovid) Re: How does my $self = (@_) actually work?
by Ovid
in thread How does my $self = (@_) actually work?
by princepawn
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |