while line = gets
p line
end

という、whileと謎の語getsを用いたループは

ARGF.readlines.each do |line|
p line
end

という、IOオブジェクトから読んで配列にしたものをeachで回すのと動作同じ
# 細かいこと言うの禁止
理解的にはこっちのほうが素直だと思う(記述がwhileよりヨコに長くなるのが難か)

最初にgetsで習うとARGFの存在を認知しにくいんじゃないかなあ

>>33
ということで、上記の配列部分
arr = ARGF.readlines