in reply to Question on SV internals

Yes. It becomes a dualvar-lite. Devel::Peek is very good at showing this.
>perl -MDevel::Peek -e"$_ = '20 ducks'; Dump($_); $_+0; Dump($_);" SV = PV(0xd888c) at 0x2be2ff4 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0xd9acc "20 ducks"\0 CUR = 8 LEN = 12 SV = PVNV(0xda40c) at 0x2be2ff4 REFCNT = 1 FLAGS = (POK,pIOK,pNOK,pPOK) IV = 20 NV = 20 PV = 0xd9acc "20 ducks"\0 CUR = 8 LEN = 12

POK = has a string
IOK = has an signed int
NOK = has a floating point number
If there a "p" flag an no corresponding non-"p" flag, it's a generated value from numerical conversion or a temporary from magic.

See also: illguts.