This is explained in perltoot, but here's the gist of what's going on:

When you invoke a method via

    method Class(args)
"Class" is passed as the first argument. That's how the new() implementation that you showed knows how to bless the anonymous hash (i.e., what Class to create an instance of). Typically, methods invoked in this fashion return new instances of some class. But this isn't always the case.

Here's a simple demonstration to show that this behavior isn't limited to new()

package Foo; sub test { print "test invoked on behalf of ", shift, " with args: @_\n"; } package main; test Foo(47);
which displays test invoked on behalf of Foo with args: 47

In reply to Re: Curious Constructor Syntax by dws
in thread Curious Constructor Syntax by sierrathedog04

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.