正規表現でカンマ位置ぞろえ

newをだらだらだらっと呼ぶ文を書いていた。

@defines = (
    ColDefine->new("ID", 12, "CHAR", "NOTNULL")
  , ColDefine->new("NAME", 100, "CHAR")
  , ColDefine->new("AGE", 3, "NUMBER")
  , ColDefine->new("SEX", 1, "NUMBER")
  , ColDefine->new("COMPANY", 100, "CHAR")
  , ColDefine->new("ADDRESS", 200, "CHAR")
  , ColDefine->new("PICK_ADDRESS", 200, "CHAR")
  , ColDefine->new("RECV_ADDRESS", 200, "CHAR")
);

こんなの。

書いてた、といってもExcelの仕様書からコピーしてきたこんなのに

ID	12	CHAR
NAME	100	CHAR
AGE	3	NUMBER
SEX	1	NUMBER
COMPANY	100	CHAR
ADDRESS	200	CHAR
PICK_ADDRESS	200	CHAR
RECV_ADDRESS	200	CHAR

エディタ上で正規表現使って、

s/([^\t]+)\t([^\t]+)\t([^\t]+)\r/  , ColDefine->new("\1", \2, "\3")\r/

とやって、ちょこちょこっとなおしただけなんだけれども。

で、せっかくだからこれを正規表現を使ってカンマの位置とかそろえられないかな?
そろえられる気がする。
ちょっと考えてみよう、と思った次第。
正規表現を使ってたから正規表現を使ってなんとかしようなんて考えるあたりが金色のハンマーみたいですね。ええ、頭悪いです。

これでどうか、と思った。

s/^(  [, ] [^,]{1,28}),/\1 ,/g

g修飾子は繰り返しの意。

繰り返し適用するとうまくいく。
(.Net関連の正規表現では\(wでw桁の右詰とかができるようだが・・・)
で、こうなる

    ColDefine->new("ID"          , 12, "CHAR", "NOTNULL")
  , ColDefine->new("NAME"        , 100, "CHAR")
  , ColDefine->new("AGE"         , 3, "NUMBER")
  , ColDefine->new("SEX"         , 1, "NUMBER")
  , ColDefine->new("COMPANY"     , 100, "CHAR")
  , ColDefine->new("ADDRESS"     , 200, "CHAR")
  , ColDefine->new("PICK_ADDRESS", 200, "CHAR")
  , ColDefine->new("RECV_ADDRESS", 200, "CHAR")


でも、Alt-AとEnterを繰り返しパタパタたたくのがなんかいやだ。
もう少しなんとかならないものか。正規表現一撃では無理か。マクロでも組んでみればいいか。