in reply to Array/List Strangeness
The difference is, that in the first two examples, you get an element of an array. In the last example you get an element from a list. Now every element of an array, which has not been set, is per default undef, since arrays in Perl have no limits. Lists are different, since lists are finite, they can return an empty list or a list shorter than the requested slice.
In Section Seekers of Perl Wisdom