原です。

|けいじゅ@日本ラショナルソフトウェアです.

|scan(/(?:^|,)(?:"((?:[^"]|"")*)"|([^,]*))/).collect{|m1,m2| m2 || m1.gsub(/""/, '"')}

根本には、パターンが空にマッチする時の scan の動作は恣意的ならざるを
えないという問題があるので、潔くケツに , を補って

def csv_split(s)
  (s + ',').scan(/"((?:[^"]|"")*)",|([^,]*),/).collect{ |m1, m2|
    m2 || m1.gsub(/""/, '"')
  }
end

がいいかもしれない。

|# このメイルスレッドはなかなかおもしろい内容がありますが, 本には反映し切
|# れそうもないなあ...

なんかいい方法はないかなあ、、、