Dot "." is the "match-all" character in a regex so your split won't return anything.
Actually split returns a lot of things, it's just that the way list assignment works there is nothing left to put in the array. If you make a slight change you can see everything that split returns:
Not sure what you mean about list assignment; the difference is that a third parameter of -1 makes split keep trailing empty strings where by default it discards them.
In your example, split returns 13 empty strings (one from before the first character of $ip, one for each position between characters, and one from after the last character.)