For proper advice, some questions need answers. You label my_init() as a private method. Why? Is that method called from some other method (public or private) of the package? In your code examples my_init() is unconditionally called from new(). Why?

As you post them, your new() and my_init() methods could as well be merged into one. Make up your mind on why you need the attribute population separated from the constructor.

There are of course good reasons for doing that.

For either use, my preferred idiom is

sub new { my $class = shift; my $self = bless {}, $class; @_ ? $self->init(@_) : $self; } sub init { my $self = shift; # do parameter validation, set attributes ... # and return the object $self; }

IMHO attributes should only be passed around using setters/getters, and an init() subroutine is a catch-all setter method to me. It might do other initializing stuff, though.

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

In reply to Re: Passing object attributes around by shmem
in thread Passing object attributes around by wfsp

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.