Robert Klemme
2/3/2005 12:19:00 PM
"BearItAll" <spam@rassler.co.uk> schrieb im Newsbeitrag
news:1107432176.47652.0@demeter.uk.clara.net...
> Robert Klemme wrote:
> > "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
> >
>
> Thankyou, I love you loads.
*blush*
> Strange really how I read that "Returns a new string..." a billion
> times, without actually noticing what it said.
>
> But then I'm the same with tax return forms.
So you never get money back?
> So as a reward you are welcome to join me in a all expenses paid round
> the world holiday on my yaght. it's about 3 foot long and 2 foot wide
> with one oar each. Let me know when your avaiable.
Lemmesee, I think, before I can join this invitation I'll have to undergo
some shrinking - otherwise there'll be hardly enough space on your
"ship"...
:-)
robert