CSVファイルの解析について質問があります。

今まで use Text::ParseWords を使ってましたが、
これでは解析出来ないデータが出てきまして、、
自分の頭では出来ませんでしたので、知恵をお借り出来ますでしょうか。

データの内容は以下の通りです。

- データはasciiのみ
- デリミタは , (カンマ)
- 数値以外のデータは " (ダブルクォーテーション)で挟まれる
- データ内に " ' , が含まれる、そして "" \" のようにエスケープされている訳ではない

# 自分で書いてみたモノの一部

push(@arr, $+) while $line =~ m{
  "([^\"]+)",?
  |([^,]+),?
  |,
}gx;

自分で書いてみたものの、
上記のコードだと " が含まれるデータは解析出来ず、、orz