いしかわ@NIMS です。

  Dir.foreach すると、ディレクトリでないものまで拾ってきて
しまうのですが、なぜでしょうか?

[環境] ruby 1.1b6 [sparc-solaris2.5.1]

% pwd
/tmp
% ls
dir1/     dir2/     dir3/     temp.rb*
% cat temp.rb
#!/usr/local/bin/ruby
Dir.foreach Dir.pwd do |dir|
  unless (dir == ".")||(dir == "..")
    Dir.chdir dir
    print Dir.pwd, "\n"
    Dir.chdir ".."
  end
end
% ./temp.rb
/tmp/dir1
/tmp/dir2
/tmp/dir3
./temp.rb:4:in `chdir': Not a directory (Errno::ENOTDIR)
        from ./temp.rb:4
        from ./temp.rb:2:in `foreach'
        from ./temp.rb:2
% mv temp.rb dir3
% ls
dir1/  dir2/  dir3/
% dir3/temp.rb
/tmp/dir1
/tmp/dir2
/tmp/dir3


====================================================
いしかわ ひろし  NEC IC Microcomputer System
h-isikaw / nims.nec.co.jp