Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re^3: A more concise way to map the contents of an array.

by LanX (Bishop)
on Dec 30, 2012 at 13:55 UTC ( #1010921=note: print w/replies, xml ) Need Help??

in reply to Re^2: A more concise way to map the contents of an array.
in thread A more concise way to map the contents of an array.

> Regarding your footnote, supposing i didn't need 0 for false, how would i do it? And how else can you represent false?

Just use the product of a doubled negation to get clear booleans!

Perl's definition of false covers different data types and context cases.

from perldata

A scalar value is interpreted as TRUE in the Boolean sense if i +t is not the null string or the number 0 (or its string equivalent, "0") +. The Boolean context is just a special kind of scalar context where +no conversion to a string or a number is ever performed.

(Null string here means either empty string "" or undef)

from perlsyn

Truth and Falsehood The number 0, the strings '0' and '', the empty list "()", and +"undef" are all false in a boolean context. All other values are true. Negation of a true value by "!" or "not" returns a special fals +e value. When evaluated as a string it is treated as '', but as a number +, it is treated as 0.

Cheers Rolf

) in this case  my @cell_contents = map { !!$_ } @$array_ref[3..10];

for me the most readable alternative!

Replies are listed 'Best First'.
Re^4: A more concise way to map the contents of an array.
by Amblikai (Scribe) on Dec 30, 2012 at 13:59 UTC

    So just to be clear, if i double negate something, i'll lose the original "value" and be left with the pure boolean representation of the data? That could prove useful!

    Thanks again for your reply!

        Thanks for the welcome and the info!

      Yes ... negating means evaluating in boolean context!

      (well "pure" is a risky adjective in the sphere of Perl's DWIM flexibility ... ;)

      Anyway if this approach ever fails it certainly is a bug!


      IMHO people prefer using 0 for false because it's easier to print and read than an empty string. But technically this is not necessary.

      Cheers Rolf

      ) lets say "well-defined"!

        Ok, thanks again for your help!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010921]
[erix]: ICYMI: it's The Future

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (8)
As of 2018-05-24 12:31 GMT
Find Nodes?
    Voting Booth?