catとhead

id:omochist:20060825:1156525401
ARGFを使うとこんな感じになります。ARGFを使うと引数がない場合には標準入力から読み込みます。

#!/usr/bin/env ruby

print ARGF.read

巨大なファイルを扱うような場合には、バッファサイズを指定して細かく読み込んだ方がよさそうです。

#!/usr/bin/env ruby

while buf = ARGF.read(4096)
  print buf
end

headはイテレータを使ってみました。openのところで明示的にcloseしなくてもよいので楽です。

#!/usr/bin/env ruby

def head(file, n)
  while n > 0 and line = gets
    puts line
    n -= 1
  end
end

ARGV.each do |arg|
  open(arg, 'r') do |file|
    head(file, 10)
  end
end

オプションの処理は特にこだわりがないのでしたらoptparseを使うのがよいと思います。もー、自分で実装するの面倒すぎ。