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?
          • Well, not always.

            Under the false assumption that if the argument is not a reference ref returns undef, a test like this

            if (defined ref $thingy) { ... }

            to check if $thingy is a reference or not, would clearly be wrong, non just redundant (you can find an example of this here []).

            Anyway my main complaint was about the fact that, even if the code is formally correct (whereas the test is used to supposedly avoid the possible warning from a subsequent test), such defined-ness test is redundant, or unnecessary,