in reply to Getting different results with $var++ and $var += 1

It's hard to get a NaN out of an add operation, unless at least one operand is itself a NaN, or both are inf of opposite sign. On my machine (perl 5.10.0) I note that when I do get a NaN it's spelt 'nan'.

Consensus appears to be that whatever is going on here, it's to do with what  my $retail_rate = $self->{'TOUR'}->{'RATE'}{$rateid}{'retail_rate'}; did, notwithstanding the fact that the result prints as 109.98. Odds are there's some magic or some overloading involved here.