Addressing your points:
- It changes the order of the rows. : Yes - it SORTS them. No change if they are already sorted.
- It drops a value from the first row.: Agreed - I found and fixed this bug this AM (original post was late at night)
- (Minor) It splits on spaces, not tabs.: Correction - it splits on WHITESPACE, that includes tab.
I agree - it is not the easiest code to read, but I think it is more data-tolerant than yours, which complains under "use warnings", if the data contains blank lines (which are present in the OP).
Regarding efficiency - sorting a million pre-sorted records takes less than a second, on modern computers, so I don't see an issue.
I do appreciate your critique, and enjoy the discussion, but, at times, i have a low threshold for responding to nits, so I apologize in advance if I appear to be un-responsive. to subsequent posts.
I hope life isn't a big joke, because I don't get it.