> Hi,
>
> busy with my script, I am trying to print my hash, which is built up as
> follows:
>
> hash:
>
> key = A, value = [1,2,3]
> key = B, value = [4,5,6]
>
> etc.
>
> I try this:
>
>  @h.each do |key,value|
>       print key, " is ", value.each {|x| print x, " -- " }, "\n"
>
> The print is strange, becuase it looks like this now:
>
> 1 -- 2 -- 3 -- A is 123
> 4 -- 5 -- 6 -- B is 456
>
> I don't understand why. If I interpreted this correctly, I've got the
> following two questions:
>
> 1. How come the code block is executed first
> 2. After that the key and value is printed, however, I don't see the
> print for the values here (except for the print in de the code block,
> which was executed already).

:) I think what you want to actually do is:

@h.each do |key,value|
  print key, " is ", value.join(' -- '), "\n"
end

or

@h.each do |key,value|
  puts key, " is ", value.join(' -- ')
end

To hopefully answer your questions:

You have asked Ruby to print out the return value of value.each{...},
which is simply value:

 [1,2,3] == [1,2,3].each {|n| do_something_with_n_if_you_like(n)}

So that explains the 123 at the end of the line, because [1,2,3].to_s is
"123"

Why the "1 -- 2 -- 3" before everything else though? Well, _before_ Ruby
can execute that first "print", it must _first_ evaluate what is being
printed, just as if you had writen "print 1+2+3". In calculating that,
Ruby calls values.each {...}, and this prints out the "1 -- 2 -- 3" at
the start of the line.

Hope that helps.