From: "H.Yamamoto" Date: 2004-02-20T14:20:27+09:00 Subject: [ruby-dev:22978] Re: Dir#glob proposal 山本です。 >例えばcp_rとか二つのディレクトリに対して再帰処理をするような場 >合、かなり楽になります。 確かに楽かも。私の場合、 def hoge(src_dir, dst_dir) Dir.glob(dst_dir + "/**/*.item") do |dst| src = src_dir + dst[dst_dir.length...dst.length] # 処理 end end なんてことをしてるんですけど、スマートとはいえませんし・・・ >> * どういう実装をイメージしてますか > >glob_helper()からdo_opendir()の部分を切り出すような感じです。 この方法だと、do_stat() なども切り出す必要があると思うので、 Dir.glob('c:/winnt/..', '*') のとき、rb_glob2 で上の二つの引数を join して 'c:/winnt/../*' として、* を指すポインタをとって、 glob_helper に引数 const char *sub を追加して上のポインタを渡せば、 glob_call_func で path - sub 個以降の文字を渡すだけで実現できそうな気がします。 今のシンタックスが Dir.glob(path, [flags]) なので互換性が心配ですが、glob は Dir インスタンスのディレクトリストリームを必要としないので、 この方がいいと思います。