http://www.perlmonks.org?node_id=305811


in reply to Re: Re: Re^4: m//g behaves strange... (!1)
in thread m//g behaves strange...

You beat me out - I had an almost identical reply ready when I saw yours. Let me just add that ~ tries to use an integer value even if only a floating-point value is set, and even if it is out of integer range (which can result in some strange results.)

Also, for any of the bitwise/stringwise ops (~, &, ^, |), quote the variable to force stringwise semanics if you are unsure where it has been:

$ perl -wle'$x="abc"; print ~$x; print $x+0; print ~$x; print ~"$x"' z?o Argument "abc" isn't numeric in addition (+) at -e line 1. 0 18446744073709551615 z?o