"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