On 10.03.2007 17:07, Sebastian Hungerecker wrote:
> Joseph Schiller wrote:
>> for some reason block processing is counter intuitive here
>> this code does not work
>>
>> e = Dir.open('/user/path/Documents')
>> e.entries.sort {|file| puts file }
>> => warning: multiple values for a block parameter (2 for 1)
> 
> It doesn't work because you pass a block that accepts only one argument to 
> sort. Any block passed to sort is supposed to take two arguments, compare 
> these arguments and return -1, 0 or 1 depending on which argument is greater.
> 
> What you apparenty want to do would be archieved by writing
> e.entries.sort.each {|file| puts file }
> thus passing the block to each and not to sort.

There is also a class method entries, so the above code can be rewritten as

Dir.entries('/user/path/Documents').sort.each {|e| puts e}

or even shorter

puts Dir.entries('/user/path/Documents').sort

Kind regards

	robert