Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > ARGF.classクラス > each

instance method ARGF.class#each

each(rs = $/) { |line| ... } -> self[permalink][rdoc]
each_line(rs = $/) { |line| ... } -> self
each(rs = $/, limit) { |line| ... } -> self
each_line(rs = $/, limit) { |line| ... } -> self
each(rs = $/) -> Enumerator
each_line(rs = $/) -> Enumerator
each(rs = $/, limit) -> Enumerator
each_line(rs = $/, limit) -> Enumerator

ARGFの現在位置から 1 行ずつ文字列として読み込み、それを引数として与えられたブロックを実行します。

ブロックが与えられなかった場合は、Enumerator オブジェクトを生成して返します。

このメソッドはスクリプトに指定した引数(Object::ARGV を参照) をファイル名とみなして、それらのファイルを連結した 1 つの仮想ファイルを表すオブジェクトです。そのため、最初のファイルを最後まで読んだ後は次のファイルの内容を返します。現在の行についてファイル名や行数を得るには ARGF.class#filenameARGF.class#lineno を使用します。

[PARAM] rs:
行の区切りを文字列で指定します。nil を指定すると行区切りなしとみなします。空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
[PARAM] limit:
各行の最大の読み込みバイト数

例: ARGFの各ファイル名(最初に1回のみ)、行番号、内容を表示

ARGF.each_line do |line|
  puts ARGF.filename if ARGF.lineno == 1
  puts "#{ARGF.lineno}: #{line}"
end

[SEE_ALSO] IO#each, IO#each_line