so a completely portable solution is impossible
That's not really an issue for me. I was just after some way of getting test 6 of PowInt.t to pass on Windows, leaving all other systems unaffected. I think I've now achieved that.
One of the things that was throwing me was that, on Linux, the strings 'nan' and 'inf' are converted to a nan/inf when used in numeric context. That is, on Linux:
perl -MDevel::Peek -e 'Dump "inf" + 1';
outputs:
SV = NV(0x...) at 0x....
REFCNT = 1
FLAGS = (NOK,READONLY,pNOK)
NV = inf
But there's no comparable behaviour (that I can find) on Windows. The strings '1.#INF' and '1.#QNAN' are not interpreted as inf/nan when used in numeric context. Instead they're just numified according to the usual rules that apply to the numification of strings - ie they take on a numeric value of 1:
C:\>perl -MDevel::Peek -e "Dump '1.#INF' + 1"
SV = IV(0x218fe28) at 0x218fe2c
REFCNT = 1
FLAGS = (PADTMP,IOK,READONLY,pIOK)
IV = 2
I wasn't expecting such different behaviour - and that added significantly to my confusion.
Cheers, Rob |