Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

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

by Amblikai (Beadle)
on Dec 30, 2012 at 13:43 UTC ( #1010920=note: print w/ replies, xml ) Need Help??


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

I like the first one you wrote, i hadn't come across that operator. Seems exactly the same as a conditional statement in Verilog. So it's still pretty readable to me!

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

Thanks very much for your very helpful reply.


Comment on Re^2: A more concise way to map the contents of an array.
Re^3: A more concise way to map the contents of an array.
by LanX (Canon) on Dec 30, 2012 at 13:55 UTC
    > 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!

      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!

        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!

        EDIT:

        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"!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010920]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2014-12-29 06:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (185 votes), past polls