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

Re^2: Secret Perl Operators: The Highlander List Asserter

by shmem (Canon)
on Jul 31, 2006 at 19:23 UTC ( #564843=note: print w/ replies, xml ) Need Help??


in reply to Re: Secret Perl Operators: the boolean list squash operator, x!!
in thread Secret Perl Operators: the boolean list squash operator, x!!

Since binary "x" works like stated in perlop

Binary "x" is the repetition operator. In scalar context or if the left operand is not enclosed in parentheses, it returns a string consisting of the left operand repeated the number of times specified by the right operand. In list context, if the left operand is enclosed in parentheses or is a list formed by "qw/STRING/", it repeats the list. If the right operand is zero or negative, it returns an empty string or an empty list, depending on the context.
this operator resolves basically to !!. I'd call that one:

The Highlander Operator.

It resolves any gazillion operations on the rhs to just 1 (One).

()x!! then is the list asserter. Of course, a list cannot be asserted better than through the Highlander Himself - so it's full name is "The Highlander List Asserter" :-)

--shmem

_($_=" "x(1<<5)."?\n".q/)Oo.  G\        /
                              /\_/(q    /
----------------------------  \__(m.====.(_("always off the crowd"))."
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}


Comment on Re^2: Secret Perl Operators: The Highlander List Asserter
Re^3: Secret Perl Operators: The Highlander's List Asserter
by ikegami (Pope) on Jul 31, 2006 at 19:38 UTC

    "Boolean Cast Operator" would be a less cryptic name than "Highlander Operator" for !!.

    It's not even correct to say it returns 1. For example, print "[", !!1, "]" prints []. For a true argument, !! returns the dualvar 1/''.

    Update: I got it backwards. True = dualvar (PVNV) 1/'1', False = dualvar (PVNV) 0/''.

      Hmm? Is that platform dependent?
      lt-gm [gm] 21:43 ~ > perl -le 'print "[", !!1, "]"' [1]

      Linux, perl 5.8.8. I choose "Higlander Operator" following the unstated naming conventions other secret operators follow ;-)

      --shmem

      _($_=" "x(1<<5)."?\n".q/)Oo.  G\        /
                                    /\_/(q    /
      ----------------------------  \__(m.====.(_("always off the crowd"))."
      ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (18)
As of 2014-07-11 15:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (229 votes), past polls