in reply to Re^4: Converting Moose object to a subclass of itself
in thread Converting Moose object to a subclass of itself

I'm using Moose so I'm not using the new constructor method.

Also, it may help you to understand the bigger picture of what I'm doing:

I've got a webserver. I am sitting at my local machine. I am writing modules on my local machine to help me automate operations on the webserver (download website database files, upgrade sites, backup sites, etc.). What I have so far is a Moose module with some helper roles that help determine Apache's DocumentRoot for a website based on a website's domain name. I create Website objects based on the DocumentRoot. The generic Website object knows nothing about what kind of site it's dealing with. It just populates the Website object's attributes with stuff by parsing the Apache config file for the website. From there, I have the Website object determine what kind of website it is by inspecting files in the DocumentRoot. My thinking is that I want to transform the Website object into something more specific based on what kind of site it is so it can run specialized methods on it.

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate";
$nysus = $PM . ' ' . $MCF;
Click here if you love Perl Monks

Replies are listed 'Best First'.
Re^6: Converting Moose object to a subclass of itself
by stevieb (Canon) on Feb 27, 2017 at 00:08 UTC

    I would implore you to learn the base Perl way of generating objects in this case.

    It appears to me as though you're losing out on a piece of the puzzle here. I do not mean to be disrespectful, but I think a peruse of perltoot and perlobj would really help.

    Starting with something that wraps (ie. hides) the constructor (eg: Moose, Moo) may be hindering you from seeing what is truly possible.

    An object can create an object of its own kind if designed properly, even with significantly different attributes and settings. You are not wanting to re-bless here, I assure you. You want to create either a same-object, or a sub-object depending on parameters sent in.

      OK, I will re-read those (it's been many moons since I've looked at them and I will probably get a lot more out of them now that I have at least a bit of a clue). I agree that conceptually I don't know enough to ask the proper question here or understand your answers. In the meantime, I have successfully been able to use the rebless_instance method to achieve what I want. Admittedly, it's a confusing mess. :) Thanks for your time and confirming that I'm likely going down the wrong path. It does help me.

      $PM = "Perl Monk's";
      $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate";
      $nysus = $PM . ' ' . $MCF;
      Click here if you love Perl Monks

        I can't speak for all of us, but for me personally, I feel you're doing a great job asking questions and digging deeper with all you do.

        Perlmonks needs people like you, because they feed people like me (and others), as this generates interesting topics. This spurs conversations where even the most knowledgeable monks pick up new things.

        Keep up with the good work, nysus, and do as I do... if you have a question, never be afraid to ask, and just ask it.