On Thu, Aug 28, 2014 at 10:33:15AM -0700, Karen Etheridge wrote: > On Thu, Aug 28, 2014 at 12:43:48PM +0100, David Cantrell wrote: > > On Wed, Aug 27, 2014 at 08:54:07AM -0700, Karen Etheridge wrote: > > > ..but as others have said, you don't 'use UNIVERSAL' directly - in fact > > > the > > > word 'UNIVERSAL' should never have to appear in your code. > > It might never *have to* appear in your code, but it is on occasion > > rather handy. UNIVERSAL::isa is useful for non-objecty code that > > manipulates or inspects classes, for example. > You should never run UNIVERSAL::isa as a function - only run it as a > method, using the class or object as the invocation subject.
That wasn't true when chromatic was banging on about this a few years back, and it's not true now. > Calling it this way breaks any code that overrides isa(). You should never override isa(). Look, I can make assertions too! Overriding isa() is lying, which is naughty. Look, I can justify my assertions too! And it's the very fact that SomeClass->isa() might tell lies that means that UNIVERSAL::isa() is sometimes the right thing to do. -- David Cantrell | Minister for Arbitrary Justice You know you're getting old when you fancy the teenager's parent and ignore the teenager -- Paul M in uknot