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


in reply to Re^5: Use Hash? Array? Still confused after all these years.
in thread Use Hash? Array? Still confused after all these years.

Pi? 0.06? Rational numbers (negative or not) are not usable array indices.

  • Comment on Re^6: Use Hash? Array? Still confused after all these years.

Replies are listed 'Best First'.
Re: Use Hash? Array? Still confused after all these years.
by benizi (Hermit) on Jul 22, 2005 at 14:29 UTC

    I hate to nitpick, because I agree that "non negative numbers" is certainly technically imprecise, and "non negative integers" is overly verbose (an entire extra word! *gasp*), compared to "whole numbers". (Incidentally, "counting numbers" doesn't include zero.) But, check this out:

    perl -Mstrict -lwe 'my @a = (0..20); print $a[$_] for 3.14159, 0.06, ( +75/9), (-75/9)' 3 0 8 13

    Perl seems to be doing an implicit 'int' on the index. (Anyone with better understanding of internals know where this happens? I tried creating a simple Tied class, and the FETCH func still sees a whole number.) This allows you to write $array[rand @array] rather than $array[int rand @array], for example.

Re^7: Use Hash? Array? Still confused after all these years.
by Anonymous Monk on Jul 22, 2005 at 14:16 UTC
    Sort of.
    $array[0.06] = 4;
    is fine with Perl. Just don't expect it to be different from $array[1/4]!