When calling String#split with no arguments, it defaults to using $;, which, by default, is set to nil. However, when calling String#split with nil (including $; when it is set to nil) it raises exception. This surprised me, which opposes the Principle of Least Surprise. Oughtn't String#split use $; when called with a nil first argument?