"puts"ing an array

Hi,
In the "pickaxe" book I see how to use a "puts" to populate a file with
data. I try the same thing, and, it works, but, it's listing the data as
an array. How can I get separate lines for each item in the array?
Thanks,
Peter

In the book:
File.open("output.txt", "w") do |file|
file.puts "Hello"
file.puts "1 + 2 = #{1+2}"
end
# Now read the file in and print its contents to STDOUT
puts File.read("output.txt")
produces:
Hello
1 + 2 = 3

My script:
Dir.chdir("L:/png/69000")
files = Dir.glob("*.png")
File.open("F:/workflows/graphics/receipts/pngfiles.txt", "w") do |file|
  file.puts "#{files}"
end
produces:
69116.png69251.png69391.pngAZ69080.pngAZ69982.pngcx69362.pngcx69363.png
. . .

···

--
Posted via http://www.ruby-forum.com/.

Dir.glob returns an array, so two possibilities are (untested):

File.open("F:/workflows/graphics/receipts/pngfiles.txt", "w") do |file|
  file.puts files.join("\n")
end

File.open("F:/workflows/graphics/receipts/pngfiles.txt", "w") do |file|
  files.each {|f| file.puts f }
end

Hope this helps,

Jesus.

···

On Tue, Jun 9, 2009 at 2:52 PM, Peter Bailey<pbailey@bna.com> wrote:

Hi,
In the "pickaxe" book I see how to use a "puts" to populate a file with
data. I try the same thing, and, it works, but, it's listing the data as
an array. How can I get separate lines for each item in the array?
Thanks,
Peter

In the book:
File.open("output.txt", "w") do |file|
file.puts "Hello"
file.puts "1 + 2 = #{1+2}"
end
# Now read the file in and print its contents to STDOUT
puts File.read("output.txt")
produces:
Hello
1 + 2 = 3

My script:
Dir.chdir("L:/png/69000")
files = Dir.glob("*.png")
File.open("F:/workflows/graphics/receipts/pngfiles.txt", "w") do |file|
file.puts "#{files}"
end
produces:
69116.png69251.png69391.pngAZ69080.pngAZ69982.pngcx69362.pngcx69363.png

Hi,
In the "pickaxe" book I see how to use a "puts" to populate a file with
data. I try the same thing, and, it works, but, it's listing the data as
an array. How can I get separate lines for each item in the array?
Thanks,
Peter

In the book:
File.open("output.txt", "w") do |file|
file.puts "Hello"
file.puts "1 + 2 = #{1+2}"
end
# Now read the file in and print its contents to STDOUT
puts File.read("output.txt")
produces:
Hello
1 + 2 = 3

My script:
Dir.chdir("L:/png/69000")
files = Dir.glob("*.png")

Dir.glob returns an Array

File.open("F:/workflows/graphics/receipts/pngfiles.txt", "w") do |file>
file.puts "#{files}"
end

The default Array#to_s is like Array#join(''). You probably want to do either:
   file.puts files.join("\n")
or iterate on the files:
   files.each do |pngfilename|
     file.puts pngfilename
   end

produces:
69116.png69251.png69391.pngAZ69080.pngAZ69982.pngcx69362.pngcx69363.png
. . .

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

···

On Jun 9, 2009, at 8:52 AM, Peter Bailey wrote:

Rob Biedenharn wrote:

···

On Jun 9, 2009, at 8:52 AM, Peter Bailey wrote:

File.open("output.txt", "w") do |file|
Dir.chdir("L:/png/69000")
files = Dir.glob("*.png")

Dir.glob returns an Array

File.open("F:/workflows/graphics/receipts/pngfiles.txt", "w") do |
file>
file.puts "#{files}"
end

The default Array#to_s is like Array#join(''). You probably want to
do either:
   file.puts files.join("\n")
or iterate on the files:
   files.each do |pngfilename|
     file.puts pngfilename
   end

produces:
69116
.png69251.png69391.pngAZ69080.pngAZ69982.pngcx69362.pngcx69363.png
. . .

-Rob

Rob Biedenharn http://agileconsultingllc.com
Rob@AgileConsultingLLC.com

Thank you very much, gentlemen. Yes, I did actually figure it out by
simply making two loops, one for the file and one for the png files
inside it.
Cheers,
Peter
--
Posted via http://www.ruby-forum.com/\.

It's even simpler:

file.puts files

Kind regards

robert

···

2009/6/9 Rob Biedenharn <Rob@agileconsultingllc.com>:

On Jun 9, 2009, at 8:52 AM, Peter Bailey wrote:

Hi,
In the "pickaxe" book I see how to use a "puts" to populate a file with
data. I try the same thing, and, it works, but, it's listing the data as
an array. How can I get separate lines for each item in the array?
Thanks,
Peter

In the book:
File.open("output.txt", "w") do |file|
file.puts "Hello"
file.puts "1 + 2 = #{1+2}"
end
# Now read the file in and print its contents to STDOUT
puts File.read("output.txt")
produces:
Hello
1 + 2 = 3

My script:
Dir.chdir("L:/png/69000")
files = Dir.glob("*.png")

Dir.glob returns an Array

File.open("F:/workflows/graphics/receipts/pngfiles.txt", "w") do |file|
file.puts "#{files}"
end

The default Array#to_s is like Array#join(''). You probably want to do
either:
file.puts files.join("\n")
or iterate on the files:
files.each do |pngfilename|
file.puts pngfilename
end

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Robert Klemme wrote:

···

2009/6/9 Rob Biedenharn <Rob@agileconsultingllc.com>:

File.open("output.txt", "w") do |file|
Dir.chdir("L:/png/69000")

�file.puts files.join("\n")
or iterate on the files:
�files.each do |pngfilename|
� �file.puts pngfilename
�end

It's even simpler:

file.puts files

Kind regards

robert

Wow. Sometimes Ruby is too beautifully simple.
Thanks, Robert.
Peter
--
Posted via http://www.ruby-forum.com/\.

Sometimes Ruby is too beautifully simple.

It inspired my general rule that if something is not looking beautiful -
or if it looks downright ugly - there must be a better way.

···

--
Posted via http://www.ruby-forum.com/\.