in reply to What is the correct definition of False and Null in Perl?

Zero (in any format), the empty string and undef are false, as documented in perlsyn. Objects can also evaluate to false through overloading.

The reason zero in every format must be false is quite simple. If zero in some formats is false and zero is some other formats is true, something false could became true just by looking at it because Perl is free to convert between equivalent representations. That would be very bad.

That means that signed integer (IV) zero is false, unsigned integer (UV) zero is false, floating point (NV) zero is false, basic string (PV,UTF=0) zero is false, and wide string (PV,UTF8=1) zero is false.

PS — I don't know which Perl book talked of "null value" and "null variable", because Perl has no such thing. Perhaps you mean undef?

  • Comment on Re: What is the correct definition of False and Null in Perl?

Replies are listed 'Best First'.
Re^2: What is the correct definition of False and Null in Perl?
by Anonymous Monk on Oct 08, 2011 at 10:48 UTC

      Not really. Many strings become zero when converted as a number, but until they've been converted, Perl doesn't consider them zero. This includes "abc" and those you listed.

      You'll never get those strings from stringifying zero, so there's no problem.

Re^2: What is the correct definition of False and Null in Perl?
by flexvault (Monsignor) on Oct 08, 2011 at 11:27 UTC

    Your internal description is appreciated. I re-checked my use of 'null' and it was used in a perl book comparing perl to C.

    I totally missed the definition of false as previously noted.

    Thank you

    "Well done is better than well said." - Benjamin Franklin