Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • I think it used to return undef on older Perls, which is where that meme came from.

    • It used to be documented as

      Returns a TRUE value if EXPR is a reference, FALSE otherwise.

      which could mean it returns "" or undef or alternates between them.
      • which means removing the defined() without putting in a require 5.8.0; would potentially create a compatibility regression, on any implementation/releases that actually returned undef when FALSE was documented?

        Do we know if it actually returned 'undef' or if it always returned q{} as it's FALSE (but defined) value?
        # I had a sig when sigs were cool
        use Sig;
        • Since undef is false, wouldn't if (ref $thingy work in all cases?
          • Sure it would. At least on the first page of results emazep's Code Search query, all code snippets take the form of
            if(defined ref $x && ref $foo eq 'X') ...
            This can be reduced to
            if(ref $x && ref $foo eq 'X') ...
            even if ref ever returned undef (which, last I heard, has always been considered false). Which it doesn't, even
            ref undef
            returns a true boolean, a value like !1. And then,
            if(ref $foo eq 'X') ...
            suffices. No warnings, now, ever. But maybe it did warn, in the past.