So shoot me for asking.
You're right about your code being ugly though..as it's not a good idea to number variables from the split. Either an array, a hash, or even a linked list result could be more appropriate, depending on what you want your "neat data structure" loaded from non-reliable input to do.
the hardest line to type correctly is: stty erase ^H