山本です。なかださんのコードで気になった点が3つあります。 (_WIN32のコードだとコンパイルで無限ループしたので、_WIN32の部分は削除してコンパイルしました。) // 1 E:\ruby-dev\ruby-1.8.1>miniruby -Ks -e "puts Dir.glob('s:/script/**/*/')" s:/script/sample/ s:/script/sample/aya/ s:/script/sample/aya/cscript/ s:/script/sample/aya/error/ s:/script/sample/aya/vs Perl/ s:/script/sample/tcp/ s:/script/test/ s:/script/test/class/ s:/script/test/file/ s:/script/project/ s:/script/project/java/ s:/script/project/wwwc/ s:/script/project/bcb/ は上からマッチするのですが、 E:\ruby-dev\ruby-1.8.1>miniruby -Ks -e "puts Dir.glob('s:/script/**/*/*/')" s:/script/sample/aya/cscript/ s:/script/sample/aya/error/ s:/script/sample/aya/vs Perl/ s:/script/sample/aya/ s:/script/sample/tcp/ s:/script/test/class/ s:/script/test/file/ s:/script/project/java/ s:/script/project/wwwc/ s:/script/project/bcb/ は、上からマッチしません。これは意図された動作でしょうか? // 2 ALLOC_BUF()ですが、malloc と free は狭いスコープで完結していたほうが保守しやすいと思います。 (途中で return や break が入ることを考えると、特に) 速度が大きく違うならと思って計測しましたが、速度に違いはありませんでした。 // 3 status = glob_helper が非0を返す場合に中断していないようです。 こっちが正しい動作なのかもしれませんが・・・