On 6 May 2013 12:02, Dave Mitchell <davem@iabyn.com> wrote: > On Sun, May 05, 2013 at 11:45:25PM +0200, Sébastien Aperghis-Tramoni wrote: >> So, here is a proposal to try making this situation a bit better: >> annotate the SV to record the initial (or canonical) type of the the >> value, that is the type of the value that was last affected to the SV. > > But I don't think that necessarily solves the problem. Consider: > > while (<DATA>) { > chomp; > my ($x,$y) = split / /, $_; > my $z = sqrt($x*$x + $y*$y); > ... serialise $x, $y, $z; > } > __DATA__ > 0.123 1.234 > ... > > should $x, $y be serialised as strings or floats? I think the desire of > the programmer would be for them to be floats, but the canonical form is > string. In other words, the initial type still doesn't necessarily DWIM, > and its still up to the programmer to manually ensure the output is as > desired. Personally i think most serialization module authors would consider the canonical form to be the string, not the NV. Consider what should happen if the data line was __DATA__ 0.123x 0.1234x Yves -- perl -Mre=debug -e "/just|another|perl|hacker/"Thread Previous | Thread Next