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


in reply to Re^2: What is true and false in Perl?
in thread What is true and false in Perl?

And by the way: You are not doing numeric addition on a string, you are evaluating "0 but true" in numeric context (to 0) - therefore no warning.

That makes no sense. The correct answer is that "0 but true" is special-cased.

$ perl -wle'print 0+"0 abc"' Argument "0 abc" isn't numeric in addition (+) at -e line 1. 0 $ perl -wle'print 0+"0 but true"' 0

Replies are listed 'Best First'.
Re^4: What is true and false in Perl?
by Anonymous Monk on Apr 15, 2012 at 02:16 UTC
    Only in the context of perl -e, as when run from a script, generates the same error (Argument "0 but true" isn't a numeric in addition (+) at line #. Also, both still print 0. And in both cases the attempt to add the string to 0 is ignored.

      Not quite sure what you are saying, but neither is behavior different when run as a 'script' versus on the command line via -e, nor is the arithmetic operation 'ignored'.

      >cat 0_but.pl use warnings; use strict; print 42 * '0 but true', "\n"; print 42 * '0 but zonk', "\n"; >perl 0_but.pl 0 Argument "0 but zonk" isn't numeric in multiplication (*) at 0_but.pl +line 5. 0

      Update: Verfied on ActiveState 5.8.9 and Strawberries 5.10.1, 5.12.3 and 5.14.2.