in reply to Re^2: Inheritance - calling parent constructor
in thread Inheritance - calling parent constructor

Wrong syntax. That will attempt to call new in package SUPER.

- That's what I thought - i got the correct syntax from the link you had - thanks

And you forgot to remove the bless that's now useless.

- Could you elaborate here? I thought I have read that re-blessing is bad and was searching for best practices on re-blessing without much luck.
  • Comment on Re^3: Inheritance - calling parent constructor

Replies are listed 'Best First'.
Re^4: Inheritance - calling parent constructor
by ikegami (Patriarch) on Dec 29, 2009 at 22:55 UTC

    I thought I have read that re-blessing is bad

    More accurately, it shouldn't be needed. If it's needed, it's a sign something else is wrong.

      But you only know whether something is wrong if you actually peek in the code of the parent class1. But that means breaking encapsulation2, which you aren't supposed to do when doing OO.

      I would leave in the bless. At worst, it's redundant. At best, it fixes something the parent does wrong.

      1 And keep peeking. If it's ok now, it may no longer be ok tomorrow after the sysadmin upgraded some packages.
      2 Of course, the code of the OP already assumes the parents constructor returns a hashref. So the OP has already sacrificed one the pearls of OO already.

        But you only know whether something is wrong if you actually peek in the code of the parent class

        No, no peeking necessary. I have no idea what you're talking about.

        At worst, it's redundant.

        It's usually redundant, but it's not the worst case. At worse, the parent (and thus the child) malfunctions (obviously or subtly).

        At best, it fixes something the parent does wrong.

        At best, it's a workaround for a bug in the parent? If there's a bug in the parent, fix the parent. Don't use a workaround just in case you might need it.