Many thanks a +0 to explicitly convert to number is fixing the issue.
> If I were to supply a value for nano- or microsecond, I would have thought that an integer would have been sufficient, and not to have supply a string for the value.
The string is an artefact from an sprintf to convert non-nanos to nanos.
> All of the numbers must be integers.
It's Perl's dogma to treat all convertible scalars alike, including integers and strings of integers.
DB<75> use warnings; print "001"+"001" # no warnings
2
DB<76>
I read the docs as "don't pass real numbers".
Keep in mind that the nanosecs could have been read from a file and come as string inside a variable.
DT::D only fails in this special case and I suppose it's because there is an inner test for falseness to see if the nanosecs are 0 ... but "000000000" OTOH is true.
some minutes later
My Boolean theory seems to be right, passing "0" works fine (false), but "00" fails (true).
|