Not the OP, but, Why is this backwards? This is actually a design pattern that I use somewhat regularly with Moose. Or the Correlary, Moose makes this design pattern extremely easy to implement with Delegation (and it's more advanced cousin Currying)

An example is my Build::VM library I'm working on: https://github.com/three18ti/Build-VM/blob/master/lib/Build/VM.pm

In my main class Build::VM, I have (stripped down):

package Build::VM; use 5.010; use Moose; use strict; use warnings; use Build::VM::Guest; has guest => ( isa => 'Build::VM::Guest', lazy => 1, default => sub { Build::VM::Guest->new( name => $_[0]->guest_name, memory => $_[0]->to_kib($_[0]->guest_memory), disk_list => $_[0]->disk_list, cdrom_list => $_[0]->cdrom_list || [[]], ); }, handles => { get_memory => 'memory', }, );

Then in my driver script that calls the module, I do:

#!/usr/bin/perl use 5.010; use strict; use warnings; use Build::VM; # Get the parameters from the CLI or config file my $bvm = Build::VM->new( name => $name, memory => $memory, disk_list => $disk_list, cdrom_list => $cdrom_list ); say $bvm->get_memory();

(ok, bad example because cdrom_list is the only one that is using delegation, technically ->memory is a method in the Build::VM::Guest object, it's just not a user defined function so it's a little more ambiguous).

Unless I'm misunderstanding what OP wants to do, why is this backwards or inside out? And if it's so backwards, why does Moose make it so easy? If you don't mind, what would be the appropriate organization for my various modules?

Also, when talking about Perl and inheritance, (which is what I think of when I hear "child class") I'm usually pointed to Moose Roles because they make multiple inheritance trivial (because it's not really inheritance, it's more like Ruby's mixins).

Thanks, I always like posts like this, even though it's not something I thought I was doing wrong, I like to learn when I am :)

-three18ti


In reply to Re^4: Method of child module called by parent by three18ti
in thread Method of child module called by parent by gzartman

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.