in reply to Re^6: Why reftype and blessed are making my life harder than it needs to be (XS/_reftype)
in thread Why reftype and blessed are making my life harder than it needs to be

That's a good thing, at least for reftype(). I can see wanting to return undef from blessed() because you can bless into the empty string. But, the empty string is the representation for one of the 8 Perl scalar types. Or, am I just completely confused?

My criteria for good software:
  1. Does it work?
  2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
  • Comment on Re^7: Why reftype and blessed are making my life harder than it needs to be (XS/_reftype)

Replies are listed 'Best First'.
Re^8: Why reftype and blessed are making my life harder than it needs to be (XS/_reftype)
by demerphq (Chancellor) on Feb 10, 2006 at 14:36 UTC

    No, there is no perl intrinsic type that doesn't have a true value. And there are more than eight. We have: HASH, ARRAY, SCALAR, CODE, GLOB, IO, REF, and FORMAT, and then there is an intrinsic type that doesnt have its own designation, that being qr// objects, which report themselves as SCALAR but are actually not SCALAR refs. Oh, and i think in later perls you also have VERSION, (or something like that) but I could be mistaken.

    Regarding making reftype() return PL_no is that one must assume that people are doing

    if (defined(reftype($x))) { ... }

    or variants thereof. At least thats what I would expect the objection would be to changing the return of reftype. Hence my idea of providing a _reftype().

    ---
    $world=~s/war/peace/g

      Don't make a new name, change the behavior at 'use' time. For example, if a module version number of at least X is demanded, then backward compatability behavior would not be required (so the function with saner behavior would be exported).

      - tye        

        Thats a great idea. Im just wondering how you would implement that? A custom import? Or something else?

        ---
        $world=~s/war/peace/g

      Gah. Because it was done wrong, all future versions have to do it wrong because people have a hack around it being done wrong. That's sad.

      Suggestion: Don't call it _reftype(). Call it what_reftype_shoulda_done()


      My criteria for good software:
      1. Does it work?
      2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?