Ruby 2.7.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > ARGFオブジェクト

object ARGF

クラスの継承リスト: ARGF.class < Enumerable < Object < Kernel < BasicObject

要約

スクリプトに指定した引数 (Object::ARGV を参照) をファイル名とみなして、それらのファイルを連結した 1 つの仮想ファイルを表すオブジェクトです。 ARGV が空なら標準入力を対象とします。 ARGV を変更すればこのオブジェクトの動作に影響します。


while line = ARGF.gets
  # do something
end

は、


while argv = ARGV.shift
  File.open(argv) {|file|
    while line = file.gets
      # do something
    end
  }
end

のように動作します。

ARGF を処理するごとに ARGV の要素は一つずつ取り除かれます。最後まで ARGF を読み込んだ後、再度 ARGF から内容を読むと (ARGV が空なので)標準入力からの読み込みとなります。


ARGV.replace %w(/tmp/foo /tmp/bar)
ARGF.each {|line|
    # 処理中の ARGV の内容を表示
    p [ARGF.filename, ARGV]
    ARGF.skip
}
    # => ["/tmp/foo", ["/tmp/bar"]]
    #    ["/tmp/bar", []]
# 最後まで読んだ後 (ARGV が空) の動作
p ARGF.gets      # => nil
p ARGF.filename  # => "-"

Kernel.#gets など一部の組み込み関数は ARGF.gets などこのオブジェクトをレシーバとしたメソッドの省略形です。

また、ARGF は ARGF.class クラスのインスタンスです。各メソッドの詳細は ARGF.class を参照してください。

別名として $< でも ARGF と同じオブジェクトにアクセスできます。

インプレースエディットモード

インプレースエディット (in-place edit) モードは Ruby のコマンドライン引数に指定されたファイルの内容を置き換えます。

コマンドラインオプションで -i を指定すると Ruby はこのモードで動作します。また ARGF.class#inplace_mode= を使用して起動後にモードに入ることも出来ます。

このモードで動作中は $stdout が処理対象への書き出しストリームで置き換えられます。実行例は Rubyの起動/コマンドラインオプションARGF.class#inplace_mode= を参照してください。

継承したメソッド

argv binmode binmode? bytes chars close closed? codepoints each each_byte each_char each_codepoint eof external_encoding file filename fileno getbyte getc gets inplace_mode inplace_mode= inspect internal_encoding lineno lineno= lines pos pos= print printf putc puts read read_nonblock readbyte readchar readline readlines readpartial rewind seek set_encoding skip to_io to_write_io write ! != __id__ __send__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined all? any? chain chunk chunk_while collect collect_concat count cycle detect drop drop_while each_cons each_entry each_slice each_with_index each_with_object entries filter filter_map find_index first grep grep_v group_by include? inject lazy max max_by min min_by minmax minmax_by none? one? partition reject reverse_each slice_after slice_before slice_when sort sort_by sum take take_while tally to_h to_set uniq zip !~ <=> == === =~ _dump class clone define_singleton_method display enum_for eql? equal? extend freeze frozen? hash initialize initialize_copy instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself marshal_dump marshal_load method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? send singleton_class singleton_method singleton_methods taint tainted? tap then to_ary to_hash to_int to_proc to_regexp to_str trust untaint untrust untrusted? .new .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_ENGINE_VERSION ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE