Roger Pack wrote: > Currently > >>> "ab\r\nc".lines[0] > NoMethodError: undefined method `[]' for #<Enumerator:0x155f220> > from (irb):1 > from C:/installs/ruby191p243p2/bin/irb:12:in `<main>' > > Doesn't it seem reasonable for this to exist? > Thanks. > -r What you might need is stringscanner It will advanced the scan one call at a time. http://www.ruby-doc.org/stdlib/libdoc/strscan/rdoc/classes/StringScanner.html irb(main):035:0> s = "one\ntwo\r\nthree\r\nfour\nfive" => "one\ntwo\r\nthree\r\nfour\nfive" irb(main):036:0> word = StringScanner.new s => #<StringScanner 0/25 @ "one\nt..."> irb(main):037:0> word.scan( /\w+\s+/ ) => "one\n" irb(main):038:0> word.scan( /\w+\s+/ ) => "two\r\n" irb(main):039:0> word.scan( /\w+\s+/ ) => "three\r\n" irb(main):040:0> word.scan( /\w+\s+/ ) => "four\n" irb(main):041:0> word.scan( /\w+\s+/ ) => nil irb(main):042:0> word = StringScanner.new s => #<StringScanner 0/25 @ "one\nt..."> irb(main):043:0> word.scan( /\w+\s+/ ).chomp => "one" irb(main):044:0> word.scan( /\w+\s+/ ).chomp => "two" irb(main):045:0> word.scan( /\w+\s+/ ).chomp => "three" irb(main):046:0> word.scan( /\w+\s+/ ).chomp => "four" irb(main):047:0> word.scan( /\w+\s+/ ).chomp NoMethodError: private method `chomp' called for nil:NilClass from (irb):47 from :0 chomp doesn't line being passed nil, test for it before calling =) you can use reg-ex to split the string into an array and then walk it. irb(main):013:0> s = "one\ntwo\r\nthree\r\nfour\nfive" => "one\ntwo\n\rthree\r\nfour\rfive" irb(main):014:0> s.split( /\s+/ ).each { |x| puts x } one two three four five => ["one", "two", "three", "four", "five"] -- Kind Regards, Rajinder Yadav http://DevMentor.org Do Good ~ Share Freely