http://www.perlmonks.org?node_id=708232


in reply to Re^2: nans, infs, and vomit
in thread nans, infs, and vomit

Re^3: $array[ 'Infinity' ]
http://www.perl.com/doc/FMTEYEWTK/is_numeric.html
http://en.wikipedia.org/wiki/Strtod

Replies are listed 'Best First'.
Re^4: nans, infs, and vomit
by syphilis (Bishop) on Sep 02, 2008 at 01:05 UTC
    http://www.perl.com/doc/FMTEYEWTK/is_numeric.html

    Yes - that puts this behaviour into context. When any string is put into numeric context, perl just hands that string over to the underlying C implementation of atof(), and we're then at the mercy of what that function does with the string it has been passed.

    On some systems, atof turns the strings 'nan' and 'inf' into actual nans and infinities. On other implementations of atof,a nan/inf will never result from a call to atof - irrespective of what string it receives. This is not a very convenient situation ... but we can't blame perl for differences in the underlying C libraries.

    Thanks for the link Anonymous Monk.

    Cheers,
    Rob
        Perl stopped using atof ...

        Oh ... thanks for the correction.

        It all still looks pretty weird to me on linux:
        $ perl -le 'print "infantile paralysis" + 0' inf $ perl -le 'print "nanny goat" + 0' nan
        I feel no strong desire to port that type of behaviour to non-POSIX platforms :-)

        Cheers,
        Rob