in reply to Re: Clarifying the Comma Operator
in thread Clarifying the Comma Operator

Any "word" that can be interpreted as a number will be converted to a string after evaluating its numeric value (e.g. "1.20" and "-034" to the left of "=>" will yield the strings "1.2" and "-34", respectively).
No, it doesn't.
perl -MDevel::Peek -we '@f = (1.20 => "1.2"); Dump $f[0]; Dump $f[1]' SV = NV(0x88238e8) at 0x87fc230 REFCNT = 1 FLAGS = (NOK,pNOK) NV = 1.2 SV = PV(0x87f9044) at 0x87fc424 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x8806fc8 "1.2"\0 CUR = 3 LEN = 4
As you can see, the 1.20 is not a string (there's no PV value, nor is POK or pPOK set), while "1.2" is a string (and not a number).

Replies are listed 'Best First'.
Re^3: Clarifying the Comma Operator
by graff (Chancellor) on Jun 07, 2009 at 19:09 UTC
    In  ( 1.20 => 'foo' ) I'm not saying that the "1.20" is a string. The point is that in order to build a string from a "word" like 1.20 that sits to the left of "=>", perl determines its numeric value (NV), which it then "stringifies" to the simplest possible form ("1.2") -- and this is what the OP was struggling with.