"BearItAll" <spam / rassler.co.uk> schrieb im Newsbeitrag news:1107426590.1467.0 / eunomia.uk.clara.net... > Hello, I'm new here, also fairly new to ruby, but I already have some > very usfull scripts written with it. > > But a problem I have over and over is that the 'chop' doesn't always > work (for me) when dealing with files. > > An example, the file '/tmp/dirtree' is the result of a class that > traverses the directory tree, the lines are written using, > > f.print "#{filename}\n" > (but I've also tried others writing methods) "f.puts filename" does the same more efficiently. > Then next would be the class to read from that file. > > DIRTREE='/tmp/dirtree' > IO.foreach(DIRTREE) { |@x| > @x.chop > print "Thisdir = #{@x}/*" > } > > The output from print gives, > > Thisdir = /home/whatever > /* > > So chop hasn't removed the newline. You want chop!() because you want to modify @x. chop() just returns a copy of the string with the last char removed. But even better use chomp!(), because chop!() and chop() always remove the last char - regardless what it is: >> s="abcde\n" => "abcde\n" >> s.chop! => "abcde" >> s.chop! => "abcd" >> s.chop! => "abc" >> s.chop! => "ab" >> s.chop! => "a" >> s.chop! => "" >> s.chop! => nil > Do you use a definitive combination of file write and read that will > always work, or is there another trick I don't know about yet. Kind regards robert