Dir.glob time of evaluation

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 ???

On Thu, 5 Apr 2007, [ISO-8859-1] Une Bévue wrote:

end
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

[email protected] wrote:

am i right or dreaming ???

you are not dreaming.

fine thanks a lot !

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

oh, i see may be the prob comes only from my shelling ?
I’ll change asap this bad habit coming from zsh ))

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

i thought, wrongly i presume, File.open() did also the closing )))

regards.

best,