From: Robert Klemme Date: 2008-04-03T15:40:05+09:00 Subject: Re: Iterators and arrays On 02.04.2008 13:17, Robert Dober wrote: > On Wed, Apr 2, 2008 at 11:53 AM, Clement Ow > wrote: >> I want to use each index of the array and loop it in such a way that the >> path names can be passed into Dir so that i can carry out multiple >> copies from different sources. unfortunately, it showed error while >> trying to run the script. Any suggestions? >> >> >> $DEST="U:/test1" >> >> source=["C:/movtest/testing", "C:/movtest", "U:/movtest", >> "U:/movtest/new", "U:/movtest/new1"] >> j=source.length - 1 >> i= -1 >> >> while i> >> Dir.chdir(source[i]) >> print Dir.getwd >> FileUtils.cp_r Dir.glob('2008*'), $DEST >> i+=1 >> >> end >> -- >> Posted via http://www.ruby-forum.com/. >> >> > You seem to get confused with the indexes, but the idiomatic Ruby code > would rather look like > > dest = "u:/..." > sources = %w{ c:/movetest/testing c:/ ... } # unless you have spaces > in the pathes > sources.each do | source | > Dir.chdir source > puts source > FileUtiles.cp_r Dir.glob(...), dest # if this is what you really want > end Inside the block I prefer Dir.chdir source do puts source FileUtiles.cp_r Dir.glob(...), dest end which will restore the original current directory. That way, you can more easily work with relative paths and it might save you from surprises when in a completely unrelated location of a larger script current dir is no longer the one that it was on program start. :-) Kind regards robert