From: Just Another Victim of the Ambient Morality Date: 2007-11-20T04:15:01+09:00 Subject: Why does IO.readlines() keep newlines? At the very least, the win32 implementation of Ruby's IO.readlines() method keeps the newline character on each string in the array. Considering that it is the newline that defines a "line," it would not be wholly unreasonable to omit it from the array, returned. I would have imagined that it was implemented using String.split(), which omits the splitting character. On a simply practical note, I'm sure the former is more popular than the latter in the following: out = File.open('file.txt', 'r'){|file| file.readlines.collect{|line| line.chomp}} out = File.open('file.txt', 'r'){|file| } ...in that rarely do people actually want newlines in their strings. Interestingly enough, I discovered this behaviour from a bug in a program which was hidden by another peculiar function, puts(). Can you imagine my surprise that puts() not only appends a newline to a string printed to stdout but, if a newline already exists, it doesn't bother appending one! So, printing strings with puts() can hide whether strings have a newline or not. Weird... So, who thinks my suggested change is a good idea? How do I go about popularizing my opinion? Thank you...