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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.