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を使うのがよいと思います。もー、自分で実装するの面倒すぎ。