in reply to Re: Distinguishing a v-string from something else
in thread Distinguishing a v-string from something else

For example, if you get '1.0', that could have really been written '1.0', or 49.46.48. There's no way to tell, other then context.

i'm not so sure this is correct. the code below seems to illustrate the storage of v-strings is different than other text strings, as v-strings are stored as octals and periods are not included. \1 is not the same as chr(49).

> perl -MDevel::Peek -e"$a=v1.0; $b='1.0'; Dump$a; Dump$b" SV = PV(0x182ebf4) at 0x182383c REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x182013c "\1\0"\0 CUR = 2 LEN = 3 SV = PV(0x182ec24) at 0x1823848 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x182012c "1.0"\0 CUR = 3 LEN = 4

~Particle *accelerates*

Replies are listed 'Best First'.
Re: Re^2: Distinguishing a v-string from something else
by theorbtwo (Prior) on Dec 06, 2002 at 06:45 UTC

    Ahh, but I didn't say that v1.0 eq "1.0"; I said '1.0' eq 49.46.48, and they are:

    >perl -MDevel::Peek=Dump -e "$a=49.46.48; $b='1.0'; Dump $a; Dump $b" SV = PV(0x225484) at 0x19245fc REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x22ce4c "1.0"\0 CUR = 3 LEN = 4 SV = PV(0x2254b4) at 0x1924608 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x22b424 "1.0"\0 CUR = 3 LEN = 4

    Oh, two BTWs: all strings are stored as an array of chars (c-style); base doesn't enter into it, in the same way as 0x10 and 16 are both the same number. It's just that Devel::Peek prints nonprintable characters as octal escapes.


    Warning: Unless otherwise stated, code is untested. Do not use without understanding. Code is posted in the hopes it is useful, but without warranty. All copyrights are relinquished into the public domain unless otherwise stated. I am not an angel. I am capable of error, and err on a fairly regular basis. If I made a mistake, please let me know (such as by replying to this node).