in reply to String to Integer, for json file
JSON is more strongly typed than Perl. Perl (the language) is designed to not really make a strong distinction between an integer and a string. But internally there is a distinction. The "SV" entity that comprises a Perl scalar variable may have an "IV" (integer value) stored in it, or a "PV" (pointer to a string), or both (as well as a few other things). Perl mostly silently vivifies PV's and IV's within scalars as needed. So if you start with $var = 100;, that scalar variable holds just an IV. Now if you say print "$var\n";, $var goes through a stringification process that results in a PV being created within the scalar too. This is all taking place hidden behind the black box of Perl's internals, and in most circumstances this implementation detail is not relevant or even noticed.
However, JSON is typed, and JSON encoders have to decide whether a scalar contains an integer or a string. Most of the time the way they decide is by looking inside the variable to see if there is a PV. Remember, scalars may contain both. But the existence of an IV is overruled by the existence of a PV.
So you have to be very careful that this variable you're encoding has never been treated as a string. Or that a new variable is used: my $new_var = 0 + $var;.
Dave
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: String to Integer, for json file
by tangent (Parson) on Dec 12, 2013 at 09:38 UTC | |
by Anonymous Monk on Dec 12, 2013 at 09:45 UTC | |
|
Re^2: String to Integer, for json file
by halecommarachel (Sexton) on Dec 12, 2013 at 16:38 UTC |