例えばPerlでテキストファイルを読み書きするには以下のようなコードを書く
open $file,"hoge.txt";
while(<file>){
//行単位の処理
}
close $file;
という感じに開いたハンドルはクローズするのが普通だ。これはJavaなんかでもそうだ。
ところがrubyではこう書けば明示的にクローズしなくてもいいらしい
File.open("hoge.txt"){|file|
//行単位の処理
}
キモはopen関数のあとにブロックで処理を書いているところ。
このように書くとブロックを抜ける際に自動でクローズ処理をしてくれるとのことだ。