http://qs1969.pair.com?node_id=1134593


in reply to Re^3: The mystery of double negation (bool 0)
in thread The mystery of double bitwise negation

Interestingly, !1 is "", ~~(!1) is 0, but ~~("") is "".
$ perl -MO=Deparse -E'say !1; say ~~(!1); say ~~("");' use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch' +, 'unicode_strings', 'unicode_eval'; say !1; say 0; say ''; -e syntax OK

Replies are listed 'Best First'.
Re^5: The mystery of double negation (SvPOK)
by tye (Sage) on Jul 13, 2015 at 21:51 UTC

    Of course. !1 is a dual-value of empty string plus 0. Bitwise operators operate on integers if the scalar has an authoritative ("public") numeric value, otherwise they operate on strings. QED.

    - tye