Method: IO#each

Defined in:
io.c

#each(sep = $/[, getline_args]) {|line| ... } ⇒ IO #each(limit[, getline_args]) {|line| ... } ⇒ IO #each(sep, limit[, getline_args]) {|line| ... } ⇒ IO #each(...) ⇒ Object

ios.each_line(sep=$/ [, getline_args]) {|line| block } -> ios

ios.each_line(limit [, getline_args])      {|line| block } -> ios
ios.each_line(sep, limit [, getline_args]) {|line| block } -> ios
ios.each_line(...)                        -> an_enumerator

Executes the block for every line in ios, where lines are separated by sep. ios must be opened for reading or an IOError will be raised.

If no block is given, an enumerator is returned instead.

f = File.new("testfile")
f.each {|line| puts "#{f.lineno}: #{line}" }

produces:

1: This is line one
2: This is line two
3: This is line three
4: And so on...

See IO.readlines for details about getline_args.

Overloads:

  • #each(sep = $/[, getline_args]) {|line| ... } ⇒ IO

    Yields:

    • (line)

    Returns:

  • #each(limit[, getline_args]) {|line| ... } ⇒ IO

    Yields:

    • (line)

    Returns:

  • #each(sep, limit[, getline_args]) {|line| ... } ⇒ IO

    Yields:

    • (line)

    Returns:



3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
# File 'io.c', line 3945

static VALUE
rb_io_each_line(int argc, VALUE *argv, VALUE io)
{
    VALUE str;
    struct getline_arg args;

    RETURN_ENUMERATOR(io, argc, argv);
    prepare_getline_args(argc, argv, &args, io);
    if (args.limit == 0)
	rb_raise(rb_eArgError, "invalid limit: 0 for each_line");
    while (!NIL_P(str = rb_io_getline_1(args.rs, args.limit, args.chomp, io))) {
	rb_yield(str);
    }
    return io;
}