http://www.perlmonks.org?node_id=871975


in reply to using constants in Derived class

I'd like to bring some curious implementation details to your attention:
  1. use constant works by automatically generating nullary subroutine that returns a constant. The optimizer then optimizes away the call, and replaces it by the constant itself.
  2. All subroutines can be used as method
  3. In method calls, the arity check from the prototype that  use contant ... installed isn't performed

Combining these curious features, you'll notice that

So if you access the constant as methods, everything should work according to your wishes. What a coincidence :-)

That way it's much more extensible than using a big if-elsif-else construct, and I consider that a good thing. It's a typical OO style, and if your application is already OO, it's good to conform to that stlye.