fails:String#scan sets $~ to MatchData of last match and nil when there's none
fails:String#scan with pattern and block sets $~ for access from the block
fails:String#scan with pattern and block sets $~ to MatchData of last match and nil when there's none for access from outside
