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


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

Which non negative numbers aren't usable?

----
Give me strength for today.. I will not talk it away..
Just for a moment.. It will burn through the clouds.. and shine down on me.

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

Replies are listed 'Best First'.
Re^6: Use Hash? Array? Still confused after all these years.
by willyyam (Priest) on Jul 22, 2005 at 12:58 UTC

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

      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.

      Sort of.
      $array[0.06] = 4;
      is fine with Perl. Just don't expect it to be different from $array[1/4]!