when you call shift it increments $ARGV to $ARGV to $ARGV and so on for each shift used.
No, shift removes the first element of @ARGV on each call, returning the element it removed.
Note that this will also match a line as simple as "123", or really anything that has three consecutive digits, since that's the only thing this regex requires. I would strongly recommend using \s+, \d+, and \w+, and anchoring the regex to the beginning and end of the string with ^ resp. $.
As long as that does not corrupt your data set it should be fine (and i am sure it is fine)
Sorry, but how can you be sure? Some file formats require \t as a column separator.
Update: Expanded the last quote and highlighted the part I was reacting to.