in reply to Check Variables for NULL

What is this NULL you speak of? Perhaps you have the wrong language? There is no NULL in Perl...

You probably want undef. That's the Perl equivalent of C/C++'s NULL. Check out defined.

if (defined $value) { Do that } else { Do this }

You can use not to reverse that.

Replies are listed 'Best First'.
Re^2: Check Variables for NULL
by GrandFather (Saint) on Feb 07, 2007 at 21:06 UTC

    Actually C doesn't have NULL either. It just has various (sometimes incompatible) variations on #define NULL 0. However 0 as a value for pointers in C is magical in a sort of similar fashion to the magic represented by undef in Perl.


    DWIM is Perl's answer to Gödel

      Check the C standard. It has a NULL. How it's implemented is implementation defined, which means it could be anything. Section 7.1.6 of the 1990 standard (yes, there's a 1999 standard - I don't have a copy of that) includes the text:

      The macros are
        NULL

      which expands to an implementation-defined null pointer constant
      You're confusing C with C++ which defines NULL to be equivalent to the integer constant 0. Normally in C, the define is actually (void*)0.

        Umm, no, actually I was thinking of K&R C. In "The C Programming Language (Second edition)" (I haven't the first handy) it says:

        The symbolic constant NULL is often used in place of zero, as a mnemonic to indicate more clearly that this is a special value for a pointer.

        It was variations on (void*)0 that I was alluding to as being a cause of grief in some rare cases (none of which I can think of at the moment, and probably all in a C++ context in any case).

        Actually NULL is not defined by C++ either, athough in "The C++ Programming Language (Third Edition)" Stroustrup comments:

        Because of C++'s tighter type checking, the use of plain 0, rather than any suggested NULL macro, leads to fewer problems.

        then goes on to suggest:

        If you feel you must define NULL, use: const int NULL = 0;

        None of which is relevant to very much, except to help highlight how little of the what people think of as C is in fact part of the C language.


        DWIM is Perl's answer to Gödel