構造体を保存する

fname = 'words.dat'

base = "BCDFGHJKLMNPQRSTVWXYZ"
(1..rand(5)+10).inject(words=[]) {|w,i|
  w << (0..rand(10)+5).inject(str="") {|x,i| x << base[rand(base.size)] }
}

p words
#=> "BJXNRN", "KTVRCZFZXJKCQZ", "NLDLHTMHF", "LGZRCSFGGTT", "KHNRNGLVRJJW", "MKDCLNMRHH", "FYCDKFQMMBH", "CPLDXPHQ", "DJDPTGMNLD", "PHKCHCWXDLZNPBX", "LDTPZJCXY"]

open( fname,'w') {|f|
  f.binmode.write( Marshal.dump(words))
}
# open( fname,'w').binmode.write( Marshal.dump(words))
# とすると,書き込み終わらないうちに↓で読みこもうとする?

words2 = Marshal.load( open(fname).binmode.read())

p words==words2  #=> true

便利.オブジェクトをハッシュに突っ込んだデータを保存させてみたけど,それも一発で保存と読み込みが出来てた.

binmodeはつけなくても読み書きできる場合と,出来ない場合があったので念のために常につけることにする.(追記:openするとき("wb")とかすればよいだけ?)