From: Louise Rains Date: 2010-08-12T06:48:41+09:00 Subject: syntax error, unexpected '}', expecting kEND I'm using ruby 1.8.6 (2010-02-04 patchlevel 398) [i386-mingw32], WinXP and Notepad++ in the Unix mode (for line endings) I have the following code: q = [1.0, 4.0, 10.0, 27.0, 50.0, 600.0, 1000.0, 5833.0, 6250.0, 1500000.0] x = q.each{|e| print Math.log10(e).to_i, " "} p x r = q.collect{|e| Math.log10(e).to_i} p r q.inject(Array.new(4,0)){ |h,e| if e < 10000 then h[Math.log10(e).to_i] +=1 } i=0 q.inject(Array.new(4,0)) do |h,e| if e < 10000 then h[r[i]] += 1 i += 1 end The first 5 lines work as expected. However, the first q.inject line and the q.inject block give the following errors: D:\abc>ruby doh2.rb doh2.rb:6: syntax error, unexpected '}', expecting kEND doh2.rb:12: syntax error, unexpected $end, expecting kEND My goal is to take the numbers in q and count how many are in the ranges 1-9, 10-99, 100-999 and 1000-9999. I thought maybe it was using the Math.log10 expression as an array index, hence the second q.inject code. I have looked at an octal dump. No surprises there. 0000000 q = [ 1 . 0 , 4 . 0 , 1 0000020 0 . 0 , 2 7 . 0 , 5 0 . 0 , 0000040 6 0 0 . 0 , 1 0 0 0 . 0 , 0000060 5 8 3 3 . 0 , 6 2 5 0 . 0 , 0000100 1 5 0 0 0 0 0 . 0 ] \n x = q 0000120 . e a c h { | e | p r i n t 0000140 M a t h . l o g 1 0 ( e ) . t o 0000160 _ i , " " } \n p x \n r = 0000200 q . c o l l e c t { | e | M 0000220 a t h . l o g 1 0 ( e ) . t o _ 0000240 i } \n p r \n q . i n j e c t ( 0000260 A r r a y . n e w ( 4 , 0 ) ) { 0000300 | h , e | i f e < 1 0 0000320 0 0 0 t h e n h [ M a t h . 0000340 l o g 1 0 ( e ) . t o _ i ] + 0000360 = 1 } \n \n i = 0 \n q . i n j e 0000400 c t ( A r r a y . n e w ( 4 , 0 0000420 ) ) d o | h , e | \n \t i f 0000440 e < 1 0 0 0 0 t h e n h 0000460 [ r [ i ] ] + = 1 \n \t i + 0000500 = 1 \n e n d \n 0000510 Any ideas as to what is going on here? I have also tried other inject statements that I know used to work, but they don't now. Is inject broken in my version? Thanks, Louise -- Posted via http://www.ruby-forum.com/.