У меня есть скрипт на Ruby 1.8.6, который должен принимать имя файла, содержащее путь, создавать папки, а затем перемещать файл в папки. У меня есть массив created_paths
для отслеживания созданных папок (скрипт будет перебирать множество файлов). У меня проблема с добавлением в массив created_paths
.
created_paths = Array.new
file_name = "first\\second\\third.txt"
parts = file_name.split('\\')
tmp_path = ""
parts.each_with_index { |part,i|
if i == (parts.length - 1)
# copy file to new dir structure
else
tmp_path << part << "/"
if !created_paths.include?(tmp_path)
puts "add to array: #{tmp_path}"
created_paths.push(tmp_path)
# create folder
end
end
}
puts "size=#{created_paths.length}\n"
created_paths.each { |z| print z, "\n " }
Когда я нажимаю tmp_path
в массив created_paths
, кажется, что добавлена ссылка на tmp_path
, а не значение. На второй итерации цикла created_paths.include?(tmp_path)
возвращает True. Как я могу получить значение tmp_path
для хранения в моем массиве, или, возможно, есть проблема с областью действия, которую я пропускаю?
Мой вывод:
add to array: first/
size=1
first/second/
Мой исключенный вывод:
add to array: first/
add to array: first/second/
size=2
first/
first/second/