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.