From: ara.t.howard@... Date: 2007-04-06T00:05:13+09:00 Subject: Re: Dir.glob time of evaluation On Thu, 5 Apr 2007, [ISO-8859-1] Une B�vue wrote: > > if i do : > > Dir.glob(".*xhtml"){|f| > fo=f.gsub(/(.*)\.xhtml$/,'\1_orig.xhtml') > if > `mv "#{f}" "#{fo}"` > File.open("#{f}",'w').puts > # c is true when we want to clean up orig files > `rm -f "#{fo}"` if c > end > } > > i got an error like : > /Users/yt/bin/set_xhtml_date:58:in `ftype': No such file or directory - > /Users/yt/Sites/Events/event_listener_orig.xhtml (Errno::ENOENT) > > i think this is because Dir.glob "sees" the saved file fo > (/Users/yt/Sites/Events/event_listener_orig.xhtml in this case) > before it has been removed with "`rm -f "#{fo}"`" > > then i changed my script to : > > fl=Dir.glob(".*xhtml") > fl.each{} > > then, because fl is evaluated before any added *_orig.xhtml file i don't > get anymore this error... > > am i right or dreaming ???? you are not dreaming. you're also crazy for shelling out to do the moving and removing: require 'fileutils' FileUtils.mv f, fo FileUtils.rm_rf fo if c also, you are leaving open file handles all over the place with this line > File.open("#{f}",'w').puts you should use open(f, 'w'){|fd| fd.puts } to ensure that each file opened is also closed regards. -a -- be kind whenever possible... it is always possible. - the dalai lama