This has nothing to do with array behaviour in general, but solely with the way
split behaves. Note that if you really want to conserve all trailing fields, instead of passing 99999, you should give it -1. This is documented in
perlfunc:
If LIMIT is specified and positive, splits into no more than that many fields (though it may split into fewer). If LIMIT is unspecified or zero, trailing null fields are stripped (which potential users of pop would do well to remember). If LIMIT is negative, it is treated as if an arbitrarily large LIMIT had been specified.
Makeshifts last the longest.