# Multiline gets?

**URL:** <https://www.ruby-forum.com/t/multiline-gets/188316>\
**Category:** Ruby\
**Created:** [May 10, 2010, 7:30am UTC](https://www.ruby-forum.com/t/multiline-gets/188316 "2010-05-10T07:30:35Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Une\_BSSSSvue](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/b4bc9f/32.png) [@Une\_BSSSSvue](https://www.ruby-forum.com/u/Une_BSSSSvue)\
**Post date:** [May 10, 2010, 7:30am UTC](https://www.ruby-forum.com/t/multiline-gets/188316/1 "2010-05-10T07:30:35Z")

</div>

if a use :  
sml = “”  
while s = STDIN.gets  
sml += s  
end

i get two times what’s on STDIN, why ?  
may be something to flush, generally it’s stdout hum ?

---

<div class="post-metadata">

**Author:** ![Une\_BSSSSvue](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/b4bc9f/32.png) [@Une\_BSSSSvue](https://www.ruby-forum.com/u/Une_BSSSSvue)\
**Post date:** [May 10, 2010, 1:18pm UTC](https://www.ruby-forum.com/t/multiline-gets/188316/2 "2010-05-10T13:18:51Z")

</div>

Hi

2010/5/10 Une Bévue [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> if a use :  
> sml = “”  
> while s = STDIN.gets  
> sml += s  
> end
> 
> i get two times what’s on STDIN, why ?  
> may be something to flush, generally it’s stdout hum ?

Are you sure? How did you check that?

irb(main):001:0\> sml = “”  
=\> “”  
irb(main):002:0\> while s = STDIN.gets  
irb(main):003:1\> sml += s  
irb(main):004:1\> end  
1  
2  
3  
=\> nil  
irb(main):005:0\> sml  
=\> “1\n2\n3\n”

---

<div class="post-metadata">

**Author:** ![Une\_BSSSSvue](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/b4bc9f/32.png) [@Une\_BSSSSvue](https://www.ruby-forum.com/u/Une_BSSSSvue)\
**Post date:** [May 10, 2010, 1:49pm UTC](https://www.ruby-forum.com/t/multiline-gets/188316/3 "2010-05-10T13:49:17Z")

</div>

2010/5/10 Luis P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> > may be something to flush, generally it’s stdout hum ?  
> > 3  
> > =\> nil  
> > irb(main):005:0\> sml  
> > =\> “1\n2\n3\n”

Also, there are much easier ways to read the complete input than to use  
#gets:

13:46:50 $ seq 1 3 | ruby19 -e ‘p STDIN.read’  
“1\n2\n3\n”  
13:46:57 $ seq 1 3 | ruby19 -e ‘STDIN.each\_line {|l| p l}’  
“1\n”  
“2\n”  
“3\n”  
13:47:50 $

Kind regards

robert
