各行にフィルード名と値が含まれ、レコードの区切りは空行という、
よくあるタイプのテキストデータベースがありますよね。ええと、
DATABASE : (RECORD "\n")*
RECORD : (FIELD "\n")*
FIELD : KEY "\t" VALUE
でいいのかな? (KEY,VALUEは文字列)
こういうテキストデータベースを読んで、各レコードをインスタン
スにし、各KEYをインスタンス変数にしたいのです。
とりあえずこんなコードで動いてはいるのですが、読みにくいし、
Ruby流じゃない気がします。
def initialize(record)
record.chomp.each_line do |l|
eval "@#{l.chomp.sub(/\t+/, '=\\'')}\'"
end
end
実はこれ、Perlスクリプトを移植しているのですが、せっかく読み
やすくなったスクリプトがここだけ変な感じ。evalを使わずに、もっ
と直截に書く方法はないでしょうか?
それと、Perl版より倍遅いので輪郭をとってみようと思っているの
ですが、そういうツールはありましたっけ?
--
川村 尚生