This is a point that deserves more than the cursory mention it got: passing -1 as the number of desired fields to
split is important when dealing with the possibility of empty fields. If you don't pass a number of desired fields, and the last fields in the input string are empty, then
split will drop them from the output. This is desirable in some cases, but not so in others. At any rate, one should be aware of this.
Makeshifts last the longest.