Ruby:ブロックの使い方
あるファイルを開きます。先頭の行に"# enconfig: cp932"を書き加えます。
書き加えたファイルを"ファイル名.new"、"ファイル名.old"とします。
そんなプログラムを書いたRubyコードがこれ。
1 def add_magic_comment(file) 2 File.open("#{file}.new", "w") do |newfile| 3 newfile.puts("# encoding: cp932") 4 File.open(file, "r") do |oldfile| 5 oldfile.each_line do |line| 6 newfile.puts(line.chomp) 7 end 8 end 9 end 10 File.rename(file, "#{file}.old") 11 File.rename("#{file}.new", file) 12 end
line2 ファイルを書き込みモードで開いて、結果をnewfileに渡します。newfileはオブジェクトです。
line3 newfileにputsメソッドで"encoding: cp932"を書きこむ
line4 同ファイル名(putsで書きこまれる前のファイル)を読み込みモードでoldfileに開く
line5 一行ごとに読み込んでlineに設定する
line6 linle内の改行コードを削除してから、newfileに書きこむ。
line10〜 元あったファイルをoldfile、新しくできたファイルをnewfileに書きかえる。
ブロックの使い方は慣れないうちは大変だが、慣れてしまえば書きやすくて便利なんだろうなぁ。