csvを扱うクラス

 #!/usr/bin/ruby -Ks
 class Csv
   include Enumerable
   def initialize(filename)
     raise if !File.exist?(filename) # 初期化
     @key,@line =[],[]                   # body
     File.open(filename){|file|
       @key=csv_split(file.gets.gsub!(/\n|\r/,'')) # key
       node=Hash.new
       while file.gets
         line=csv_split($_.gsub(/\n|\r/,''))
         @key.each_index{|index|
           node[@key[index]]=line[index]
         }
         @line.push(node)
       end
     }
   end
   def csv_split(src)            # csvの一列を配列に変換する
     csv=[]
     src+=','
     src.scan(/(([^",][^,]*|)|"(([^"]|"")*)"),/) {|match,m1,m2,*rests|
       if m2
         csv.push(m2.gsub(/""/,'"'))
       else
         csv.push(m1)
       end
     }
     p csv
     csv
   end
   def keys
     @key
   end
   def [](num)
     @line[num]
   end
   def each
     @line.each{|i|
       yield(i)
     }
   end
   def to_s
     ret=@key.join(',')+"\n"
     @line.map{|i|
       a=""
       @key.each_index{|j|
         a+=i[@key[j]]+','
       }
       a.sub!(/,$/,"\n")
       ret+=a
     }
     ret
   end
 end
 
 if __FILE__==$0# ライブラリテスト用コード
   a=Csv.new("./testdata.csv")
   puts a
 end
*[ruby/LDAP] インストール
>||
 apt-get install libldap-ruby