From: Tokita Kousui Date: 2000-12-01T17:21:01+09:00 Subject: [ruby-list:26245] Re: String#sub! on RAA: auto bookmark ???? Fri, Dec 01, 2000 at 01:04:45AM +0900 において Koji Arai さん曰く: > 新井です。 > > > ども、時田です。 > > Findモジュールでディレクトリを検索した結果から先頭のディレクトリ名を > > 消す処理をしている部分で、何故か そのディレクトリ名を保存している変数が > > クリアされてしまいます。 > > 話から察するに > > require 'find' > > d = "/tmp" > Find.find(d) {|f| p d.equal? f; break} > > => true > > なのが問題ではないかと思われます。find の引数に渡された d は、 > 最初そのままブロックの引数 f に渡されます。そして、 > > require 'find' > > d = "/tmp" > findout = [] > Find.find(d) {|f| p d.id, f.id; findout << f; break } > findout[0].sub!(/^#{d}/, "" ) > p d, findout > > => "" > [""] > > といったことをやっているのではないでしょうか?これは1.4でも > 同じなのでもうちょっと話は複雑なのだとは思いますが、 > > o find(d.dup) とする > o 添付のパッチをfind.rbに適用する > > のどちらかでうまくいきませんか? > > # /^#{d}/o とした方が速そうです。。。というのは別の話。 > > -- > 新井康司 (Koji Arai) > > Index: find.rb > =================================================================== > RCS file: /home/cvs/ruby/lib/find.rb,v > retrieving revision 1.8 > diff -u -r1.8 find.rb > --- find.rb 2000/10/02 07:48:37 1.8 > +++ find.rb 2000/11/30 16:00:04 > @@ -9,6 +9,7 @@ > > module Find > def find(*path) > + path.collect! {|d| d.dup} > while file = path.shift > catch(:prune) do > yield file -- 時田幸粋 http://ibis.where-i.net/index.htm