http://qs321.pair.com?node_id=657336


in reply to $array[ 'Infinity' ]

infinity is recognized as a number from perl 5.6.1.

Updated:Sorry for the changes, blokhead.

Replies are listed 'Best First'.
Re^2: $array[ 'Infinity' ]
by blokhead (Monsignor) on Dec 16, 2007 at 23:13 UTC
    Update: explorer changed the content of the parent post without any indication, so now my reply no longer makes much sense. The parent post originally read that the string "Infinity" evalutes to zero in numeric context, thus 0+"Infinity" is 0, and -"Infinity" was -0.

    Did you test it? Besides, why would $arr[0] be different than $arr[-0]?

    $ perl -le 'print 0+(-Infinity)' -inf $ perl -le 'print 0+("Infinity")' inf $ perl -v This is perl, v5.8.8 built for i486-linux-gnu-thread-multi
    I'm not sure I ever considered using infinity as an array offset. Nor did I guess that 0+"Infinity" would actually be infinity. It is cute that both do reasonable things.

    blokhead

      Is Perl suppose to support Infinity as a number? If so, it has two bugs: it doesn't work, and it's not in the docs. It's not in the 5.10.0 docs either.

      It's not recognized by the parser:

      >perl -e "use Devel::Peek; $x="Infinity"; Dump($x); $x=Infinity; Dump( +$x)" SV = PV(0x22612c) at 0x226000 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x182cb54 "Infinity"\0 CUR = 8 LEN = 12 SV = PV(0x22612c) at 0x226000 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x182cb54 "Infinity"\0 CUR = 8 LEN = 12 >perl -e "use Devel::Peek; $x="-Infinity"; Dump($x); $x=-Infinity; Dum +p($x)" SV = PV(0x226150) at 0x226000 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x1835404 "-Infinity"\0 CUR = 9 LEN = 12 SV = PV(0x226150) at 0x226000 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x1835404 "-Infinity"\0 CUR = 9 LEN = 12

      I also get different output from the commands you issued.

      >perl -le "print 0+(-Infinity)" 0 >perl -le "print 0+('Infinity')" 0
      >perl -v This is perl, v5.8.8 built for MSWin32-x86-multi-thread (with 25 registered patches, see perl -V for more detail) Copyright 1987-2006, Larry Wall Binary build 817 [257965] provided by ActiveState http://www.ActiveSta +te.com Built Mar 20 2006 17:54:25 ...

      Has this been discussed on P5P?

        I have no idea what it's supposed to do. I couldn't find anything in my local docs about it either (nor about NaN, which has similar behavior on my build).

        Maybe it depends on the local floating-point arithmetic library?

        Searching came up with: this perl5.porters msg, and also FMTYEWTK about is_numeric, which seems to suggest that perl calls to the atof() library function. Finally, bignum suggests that "Perl doesn't always handle bareword NaN/inf properly."

        blokhead